From ced201cf6969b929c0ea32dae935de05085b2a86 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 17 Jun 2021 13:44:08 -0400 Subject: [PATCH 01/28] first pass implementation --- pyproject.toml | 2 +- src/encoded/search/lucene_builder.py | 30 +++++++++++++++++++--------- src/encoded/tests/test_search.py | 27 +++++++++++++++++++++++-- src/encoded/tests/testing_views.py | 9 ++++++++- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4fa0c8826a..6688079c33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] # Note: Various modules refer to this system as "encoded", not "cgap-portal". name = "encoded" -version = "6.8.3" +version = "6.8.4" description = "Clinical Genomics Analysis Platform" authors = ["4DN-DCIC Team "] license = "MIT" diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 6e155f2eef..b1f6118238 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -51,19 +51,26 @@ def apply_range_filters(range_filters, must_filters, es_mapping): # nested range fields must also be separated from other nested sub queries - see comment in 'handle_nested_filters' for range_field, range_def in range_filters.items(): nested_path = find_nested_path(range_field, es_mapping) + range_query = {RANGE: {range_field: range_def}} + if 'add_no_value' in range_def: + del range_def['add_no_value'] + range_query = { + BOOL: { + SHOULD: [ + range_query, + {BOOL: {MUST_NOT: {EXISTS: {FIELD: range_field}}}} + ] + } + } if nested_path: must_filters.append(('range', { # NOT using the constant, since the 2nd part is the lucene sub-query NESTED: { PATH: nested_path, - QUERY: { - RANGE: {range_field: range_def} - } + QUERY: range_query } })) else: - must_filters.append(('range', { - RANGE: {range_field: range_def} - })) + must_filters.append(('range', range_query)) @staticmethod def handle_should_query(field_name, options): @@ -132,7 +139,7 @@ def build_sub_queries(cls, field_filters, es_mapping): if filters['add_no_value'] is True: # when searching on 'No Value' should_arr = [must_not_terms] if must_not_terms else [] should_arr.append({BOOL: {MUST: {EXISTS: {FIELD: query_field}}}}) # field=value OR field DNE - must_not_filters_nested.append((query_field, should_arr)) + must_filters_nested.append((query_field, should_arr)) if must_terms: must_filters_nested.append((query_field, must_terms)) else: # when not searching on 'No Value' should_arr = [must_terms] if must_terms else [] @@ -153,7 +160,7 @@ def build_sub_queries(cls, field_filters, es_mapping): # add to must_not in an OR case, which is equivalent to filtering on '! No value' should_arr = [must_terms] if must_terms else [] should_arr.append({EXISTS: {FIELD: query_field}}) # field=value OR field EXISTS - must_filters.append((query_field, {BOOL: {SHOULD: should_arr}})) + must_not_filters.append((query_field, {BOOL: {SHOULD: should_arr}})) else: # no filtering on 'No value' if must_terms: must_filters.append((query_field, must_terms)) if must_not_terms: must_not_filters.append((query_field, must_not_terms)) @@ -252,7 +259,7 @@ def handle_nested_filters(cls, nested_filters, final_filters, es_mapping, key='m else: insertion_point = _q[NESTED][QUERY][BOOL] if key not in insertion_point: # this can happen if we are combining with 'No value' - insertion_point[key] = query[BOOL][key][0] + insertion_point[key] = query[BOOL][key][0] else: insertion_point[key].append(query[BOOL][key][0]) @@ -383,6 +390,7 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): exists_field = False # keep track of null values range_type = False # If we determine is a range request (field.to, field.from), will be populated with string 'date' or 'numerical' range_direction = None + field_schema = {} if field == 'q' or field in COMMON_EXCLUDED_URI_PARAMS: continue elif field == 'type' and term != 'Item': @@ -462,6 +470,10 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): if term > range_filters[query_field][range_direction]: range_filters[query_field][range_direction] = term + # Check if schema requests no value + if field_schema.get('add_no_value', False): + range_filters[query_field]['add_no_value'] = True + # add these to field_filters directly, handle later with build_sub_queries else: if query_field not in field_filters: diff --git a/src/encoded/tests/test_search.py b/src/encoded/tests/test_search.py index 9c7803db5b..eed72ce4b6 100644 --- a/src/encoded/tests/test_search.py +++ b/src/encoded/tests/test_search.py @@ -1235,10 +1235,13 @@ def test_search_additional_facets_workbook_multiple(self, workbook, es_testapp, @pytest.fixture(scope='session') def bucket_range_data_raw(): - """ 10 objects with a numerical field we will bucket on. + """ 9 objects with a numerical field we will bucket on. 'special_integer' has i in it. 'special_object_that_holds_integer' holds a single integer field with i as well 'array_of_objects_that_holds_integer' holds 2 objects that are mirrors of one another + + + 1 object with a value for no_value_integer, to test that filtering on a field that sets + 'add_no_value' to True will not filter documents with 'No value'. """ return [{ 'special_integer': i, @@ -1255,7 +1258,9 @@ def bucket_range_data_raw(): 'embedded_integer': 9 if i < 5 else 0 }, ] - } for i in range(10)] + } for i in range(9)] + [{ + 'no_value_integer': 8 + }] @pytest.fixture(scope='session') # XXX: consider scope further - Will 11/5/2020 @@ -1279,6 +1284,10 @@ def verify_facet_counts(facets, expected_fields, expected_cardinality, expected_ for bucket in facet['ranges']: assert bucket['doc_count'] == expected_count + @staticmethod + def verify_counts(response, expected_count): + assert len(response['@graph']) == expected_count + @staticmethod def select_facet(facets, facet_name): result = None @@ -1324,6 +1333,20 @@ def test_search_bucket_range_nested_qualifier_multiple(self, workbook, es_testap assert 'label' in r assert r['label'] in ['Low', 'High'] + def test_search_bucket_range_add_no_value(self, workbook, es_testapp, bucket_range_data): + """ Tests that providing a range filter on a field that specifies 'add_no_value' does not + filter documents that have no value for that field. + """ + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=5').json # should detect + self.verify_counts(res, 10) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=10').json # should not detect + self.verify_counts(res, 9) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.to=10').json # should detect + self.verify_counts(res, 10) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=4' + '&no_value_integer.to=10').json # should detect + self.verify_counts(res, 10) + def test_search_bucket_range_workbook(self, es_testapp, workbook): # TODO: write me once some bucket-range aggregations are defined on schemas for workbook inserts pass diff --git a/src/encoded/tests/testing_views.py b/src/encoded/tests/testing_views.py index 5d8e648b80..3c6e6b67b4 100644 --- a/src/encoded/tests/testing_views.py +++ b/src/encoded/tests/testing_views.py @@ -389,11 +389,18 @@ def non_nested_array_of_objects(self, unfaceted_array_of_objects): @collection('testing-bucket-range-facets') class TestingBucketRangeFacets(Item): - """ Collection for testing BucketRange facets. """ + """ Collection for testing BucketRange facets. + Also tests 'add_no_value' schema param behavior. + """ item_type = 'testing_bucket_range_facets' schema = { 'type': 'object', 'properties': { + 'no_value_integer': { + 'type': 'integer', + 'add_no_value': True # if a range query is specified on this field, include documents that + # have 'No value' for the field + }, 'special_integer': { 'type': 'integer' }, From bee1e55bddf74a0258f9f0a2b95614fd846d3639 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 17 Jun 2021 14:57:13 -0400 Subject: [PATCH 02/28] revert changes to no value handling --- src/encoded/search/lucene_builder.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index b1f6118238..9ec798e035 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -139,7 +139,7 @@ def build_sub_queries(cls, field_filters, es_mapping): if filters['add_no_value'] is True: # when searching on 'No Value' should_arr = [must_not_terms] if must_not_terms else [] should_arr.append({BOOL: {MUST: {EXISTS: {FIELD: query_field}}}}) # field=value OR field DNE - must_filters_nested.append((query_field, should_arr)) + must_not_filters_nested.append((query_field, should_arr)) if must_terms: must_filters_nested.append((query_field, must_terms)) else: # when not searching on 'No Value' should_arr = [must_terms] if must_terms else [] @@ -160,10 +160,11 @@ def build_sub_queries(cls, field_filters, es_mapping): # add to must_not in an OR case, which is equivalent to filtering on '! No value' should_arr = [must_terms] if must_terms else [] should_arr.append({EXISTS: {FIELD: query_field}}) # field=value OR field EXISTS - must_not_filters.append((query_field, {BOOL: {SHOULD: should_arr}})) - else: # no filtering on 'No value' - if must_terms: must_filters.append((query_field, must_terms)) - if must_not_terms: must_not_filters.append((query_field, must_not_terms)) + must_filters.append((query_field, {BOOL: {SHOULD: should_arr}})) + elif must_terms: # no filtering on 'No value' + must_filters.append((query_field, must_terms)) + if must_not_terms: + must_not_filters.append((query_field, must_not_terms)) return must_filters, must_not_filters, must_filters_nested, must_not_filters_nested From 6750600919214e5714ac1f3b02d25a9649955380 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Mon, 21 Jun 2021 11:33:11 -0400 Subject: [PATCH 03/28] handle range fields that are arrays --- src/encoded/search/lucene_builder.py | 2 ++ src/encoded/tests/test_search.py | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 9ec798e035..1506841b0e 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -472,6 +472,8 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): range_filters[query_field][range_direction] = term # Check if schema requests no value + if 'items' in field_schema: # we are searching on an array of numerics + field_schema = field_schema['items'] if field_schema.get('add_no_value', False): range_filters[query_field]['add_no_value'] = True diff --git a/src/encoded/tests/test_search.py b/src/encoded/tests/test_search.py index eed72ce4b6..8189dd88af 100644 --- a/src/encoded/tests/test_search.py +++ b/src/encoded/tests/test_search.py @@ -1299,7 +1299,7 @@ def select_facet(facets, facet_name): @pytest.mark.parametrize('expected_fields, expected_counts', [ (['special_integer', 'special_object_that_holds_integer.embedded_integer'], 5), - (['array_of_objects_that_holds_integer.embedded_integer'], 10) + (['array_of_objects_that_holds_integer.embedded_integer'], 9) ]) def test_search_bucket_range_simple(self, workbook, es_testapp, bucket_range_data, expected_fields, expected_counts): """ Tests searching a collection of documents with varying integer field types that @@ -1316,7 +1316,7 @@ def test_search_bucket_range_nested_qualifier(self, workbook, es_testapp, bucket res = es_testapp.get('/search/?type=TestingBucketRangeFacets' '&array_of_objects_that_holds_integer.embedded_identifier=%s' % identifier).json['facets'] self.verify_facet_counts(res, ['array_of_objects_that_holds_integer.embedded_integer'], - 2, 10) + 2, 9) @pytest.mark.parametrize('identifier', [ 'reverse', 'forward' @@ -1327,7 +1327,7 @@ def test_search_bucket_range_nested_qualifier_multiple(self, workbook, es_testap '&array_of_objects_that_holds_integer.embedded_integer.from=6' '&array_of_objects_that_holds_integer.embedded_identifier=%s' % identifier).json['facets'] self.verify_facet_counts(res, ['array_of_objects_that_holds_integer.embedded_integer'], - 2, 10) + 2, 9) facet_with_labels = self.select_facet(res, 'array_of_objects_that_holds_integer.embedded_integer') for r in facet_with_labels['ranges']: assert 'label' in r From 0fd30094ffbe0e2dc8dad52c6cc829373199390c Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Mon, 21 Jun 2021 12:01:30 -0400 Subject: [PATCH 04/28] fix last test, give npm a little more time --- Makefile | 2 +- src/encoded/tests/test_search.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 31ae36e72a..46db912c3f 100644 --- a/Makefile +++ b/Makefile @@ -148,7 +148,7 @@ test-any: poetry run python -m pytest -vv -r w --timeout=200 test-npm: - poetry run python -m pytest -vv -r w --timeout=200 -m "not manual and not integratedx and not performance and not broken and not sloppy and not indexing" + poetry run python -m pytest -vv -r w --timeout=300 -m "not manual and not integratedx and not performance and not broken and not sloppy and not indexing" test-unit: poetry run python -m pytest -vv -r w --timeout=200 -m "not manual and not integratedx and not performance and not broken and not sloppy and indexing" diff --git a/src/encoded/tests/test_search.py b/src/encoded/tests/test_search.py index 8189dd88af..153eccdca2 100644 --- a/src/encoded/tests/test_search.py +++ b/src/encoded/tests/test_search.py @@ -1298,7 +1298,7 @@ def select_facet(facets, facet_name): return result @pytest.mark.parametrize('expected_fields, expected_counts', [ - (['special_integer', 'special_object_that_holds_integer.embedded_integer'], 5), + (['special_integer', 'special_object_that_holds_integer.embedded_integer'], 4), (['array_of_objects_that_holds_integer.embedded_integer'], 9) ]) def test_search_bucket_range_simple(self, workbook, es_testapp, bucket_range_data, expected_fields, expected_counts): From f8a5c03169eb7f715184616905f9dda52e297caf Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 23 Jun 2021 14:28:34 -0400 Subject: [PATCH 05/28] bring in add_no_value from table, integrate into tests, schemas, and other fixes --- .../annotations/v0.5.4_variant_table.csv | 479 +++++++++--------- src/encoded/ingestion/table_utils.py | 2 +- src/encoded/schemas/annotation_field.json | 5 + src/encoded/schemas/variant.json | 176 +++++-- src/encoded/schemas/variant_embeds.json | 2 +- src/encoded/schemas/variant_sample.json | 67 +-- src/encoded/search/lucene_builder.py | 36 +- src/encoded/search/search.py | 14 + src/encoded/tests/test_search.py | 41 +- .../tests/test_variant_table_intake.py | 11 +- src/encoded/tests/testing_views.py | 23 + 11 files changed, 491 insertions(+), 365 deletions(-) diff --git a/src/encoded/annotations/v0.5.4_variant_table.csv b/src/encoded/annotations/v0.5.4_variant_table.csv index df18bd63df..c1971c9171 100644 --- a/src/encoded/annotations/v0.5.4_variant_table.csv +++ b/src/encoded/annotations/v0.5.4_variant_table.csv @@ -1,239 +1,240 @@ -,#FILEFORMAT=annV0.5.4,,,,,,,,,,,,,,,,,,,,,,,,, -,#FILEDATE=04.20.2021,,,,,,,,,,,,,,,,,,,,,,,,, -no,field_name,vcf_field,schema_title,do_import,value_example,scope,source_name,source_version,description,field_type,sub_embedding_group,is_list,priority,source,pattern,default,min,max,enum_list,links_to,embedded_field,calculated_property,link,comments,annotation_space_location,abbreviation -1,CHROM,CHROM,Chromosome,Y,1;2;3;4;5;6;22;X;Y;M,variant,VCF,VCFv4.2,Chromosome,string,,N,5,VCF,,,,,"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,X,Y,M",,,,,,Position, -2,POS,POS,Position,Y,949608,variant,VCF,VCFv4.2,Position,integer,,N,5,VCF,,,0,,,,,,,,Position - maybe later, -3,ID,ID,dbSNP ID,Y,rs1921;rs1922;rs1923,variant,NCBI dbSNP,v151 (all variants),dbSNP ID,string,,N,3,manual - dbSNP_ID_fixer.py,,,,,,,,,,,, -4,REF,REF,Ref,Y,G,variant,VCF,VCFv4.2,Reference allele,string,,N,5,VCF,,,,,,,,,,,Position - maybe later, -5,ALT,ALT,Alt,Y,A;T;C;G;GAAATCA,variant,VCF,VCFv4.2,Alternative allele,string,,N,5,VCF,,,,,,,,,,,Position - maybe later, -6,QUAL,QUAL,Variant Quality,Y,302.6,sample_variant,VCF,VCFv4.2,phred-scaled quality score for the assertion made in ALT (multi-sample),number,,N,5,VCF,,,,,,,,,,,Quality, -7,CALL_INFO,CALL_INFO,Sample ID,Y,"0/1:33,14:47:99:310,0,927",sample_variant,VCF,VCFv4.2,Calling info,string,,N,5,VCF,,,,,,,,,,,, -8,GT,GT,Genotype,Y,"0/1,0/2,1/2",sample_variant,VCF,VCFv4.2,Genotype,string,,N,4,VCF,,,,,,,,,,,, -9,AD,AD,Allelic Depth,Y,"33,14",sample_variant,VCF,VCFv4.2,Allelic depth,string,,N,5,VCF,,,,,,,,,,,, -10,AD_REF,AD_REF,AD (Ref),Y,33,sample_variant,VCF,VCFv4.2,Reference allelic depth,integer,,N,5,manual / calculated?,,,,,,,,Y,,,, -11,AD_ALT,AD_ALT,AD (Alt),Y,14,sample_variant,VCF,VCFv4.2,Alternate allelic depth,integer,,N,5,manual / calculated?,,,,,,,,Y,,,,AD -12,DP,DP,Coverage,Y,47,sample_variant,VCF,VCFv4.2,Approximate read depth,integer,,N,4,VCF,,,0,,,,,,,,, -13,GQ,GQ,Genotype Quality,Y,99,sample_variant,VCF,VCFv4.2,"phred-scaled quality score that the genotype is accurate [min(99,PL(max)-PL(second))]",integer,,N,4,VCF,,,,,,,,,,,Quality, -14,PL,PL,"Genotype Likelihoods (0/0,0/1,1/1)",Y,"310,200,100",sample_variant,VCF,VCFv4.2,"Phred-scaled likelihoods for genotype (Ref/Ref, Ref/Alt, Alt/Alt)",string,,N,,VCF,,,,,,,,,,,Quality, -15,PGT,PGT,Phasing information,Y,0|1,sample_variant,VCF,VCFv4.2,Physical phasing haplotype information,string,,N,,VCF,,,,,,,,,,,, -16,PID,PID,Phasing ID,Y,985446_G_T,sample_variant,VCF,VCFv4.2,Physical phasing ID information,string,,N,,VCF,,,,,,,,,,,, -17,PS,PS,Phasing Set,Y,985446,sample_variant,VCF,VCFv4.2,Phasing set ID,integer,,N,,VCF,,,,,,,,,,,, -18,AF,AF,VAF,Y,0.2979,sample_variant,VCF,VCFv4.2,Variant allele fraction,number,,N,4,VCF,,,0,1,,,,Y,,,, -19,FS,FS,Strand Fisher Score,Y,,sample_variant,VCF,VCFv4.2,Fisher strand score,number,,N,4,VCF,,,,,,,,,,,Quality, -20,novoPP,novoPP,novoCaller PP,Y,1.0;0.9999999999999998,sample_variant,VCF,VCFv4.2,Posterior probability of de novo mutation,number,,N,4,novocaller,,,0,1,,,,,,,DeNovo,novoPP -21,samplegeno_numgt,samplegeno_numgt,Sample Genotype (Numeric),Y,0/1,sample_variant,SAMPLEGENO,v0.4,Sample genotype (number format),string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage, -22,samplegeno_gt,samplegeno_gt,Sample Genotype (Nucleotide),Y,G/T,sample_variant,SAMPLEGENO,v0.4,Sample genotype (nucletide format),string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage, -23,samplegeno_ad,samplegeno_ad,Sample Genotype (Allele Depth),Y,21/10,sample_variant,SAMPLEGENO,v0.4,Allelic depth,string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage (Relation and Call are coming soon), -24,samplegeno_sampleid,samplegeno_sampleid,Sample Genotype (Sample ID),Y,,sample_variant,SAMPLEGENO,v0.4,Sample ID,string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage, -,samplegeno_ac,samplegeno_ac,Sample Genotype (Alt Allele Count Per Gene),Y,,sample_variant,SAMPLEGENO,v0.4,Alt allele count per gene,integer,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,Genotype,,,,,,,,,,,,, -25,hgvsg,hgvsg,Variant,Y,NC_000001.11:g.1014228G>A,variant,hgvsg_creator.py,v1,HGVS genome sequence name,string,,N,3,manual,,,,,,,,,,,Position, -26,variantClass,variantClass,Variant Type,Y,,variant,VCF,VCFv4.2,"Variant type (SNV, INS, DEL)",string,,N,3,manual,,,,,"SNV,INS,DEL,MNV",,,,,,, -27,hg19_chr,hg19_chr,Chromosome (hg19),Y,1,variant,pyliftover,v0.4,hg19 coordinate chromosome,string,,N,3,manual,,,,,,,,,,,Position, -28,hg19_pos,hg19_pos,Position (hg19),Y,69511,variant,pyliftover,v0.4,hg19 coordinate position,integer,,N,3,manual,,,,,,,,,,,Position - maybe later, -29,csq_consequence,csq_consequence,,Y,intron_variant&non_coding_transcript_variant,variant,VEP,v101,Consequence type,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,5,vep,,,,,,VariantConsequence,,,,,, -30,csq_consequence.var_conseq_id,csq_consequence.var_conseq_id,,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,, -31,csq_consequence.definition,csq_consequence.definition,,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,, -32,csq_consequence.impact,csq_consequence.impact,Impact (Trancript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,, -33,csq_consequence.location,csq_consequence.location,Location (Transcript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP - used to build location, -34,csq_consequence.coding_effect,csq_consequence.coding_effect,Coding Effect (Transcript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP, -35,csq_consequence.var_conseq_name,csq_consequence.var_conseq_name,Consequence Name,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,,,,,,,,Y,,,,, -36,csq_gene,csq_gene,,Y,ENSG00000223972,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,Gene,,,,,, -37,csq_gene.gene_symbol,csq_gene.gene_symbol,Gene,Y,,variant,VEP,v101,Stable ID of affected gene,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP, -38,csq_gene.ensgid,csq_gene.ensgid,Gene (Ensembl),Y,,variant,VEP,v101,Enseml ID of affected gene,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,, -39,csq_feature,csq_feature,Transcript (Ensembl),Y,ENST00000450305,variant,VEP,v101,Stable ID of feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,http://useast.ensembl.org/Homo_sapiens/Transcript/Summary?db=core;t=,,VEP - maybe later, -40,csq_mane,csq_mane,Transcript,Y,NM_015658.4,variant,VEP,v101,Stable ID of feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,manual,,,,,,,,,,,VEP, -41,csq_biotype,csq_biotype,Biotype,Y,transcribed_unprocessed_pseudogene,variant,VEP,v101,Biotype of transcript or regulatory feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -42,csq_exon,csq_exon,Exon,Y,6/6,variant,VEP,v101,Exon number(s) / total,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used to build location, -43,csq_intron,csq_intron,Intron,Y,10/10,variant,VEP,v101,Intron number(s) / total,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used to build location, -44,csq_hgvsc,csq_hgvsc,HGVS-coding,Y,ENST00000450305.2:n.575T>A,variant,VEP,v101,HGVS coding sequence name,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP, -45,csq_hgvsp,csq_hgvsp,HGVS-protein,Y,ENSP00000334393.3:p.Ser60%3D,variant,VEP,v101,HGVS protein sequence name,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP, -46,csq_cdna_position,csq_cdna_position,cDNA position,Y,575,variant,VEP,v101,Relative position of base pair in cDNA sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -47,csq_cds_position,csq_cds_position,CDS position,Y,180,variant,VEP,v101,Relative position of base pair in coding sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -48,csq_protein_position,csq_protein_position,AA position,Y,60,variant,VEP,v101,Relative position of amino acid in protein,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -49,csq_amino_acids,csq_amino_acids,AA change,Y,S,variant,VEP,v101,Reference and variant amino acids,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - maybe later, -50,csq_codons,csq_codons,codon change,Y,tcA/tcG,variant,VEP,v101,Reference and variant codon sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - maybe later, -51,csq_distance,csq_distance,distance to transcript,Y,1863,variant,VEP,v101,Shortest distance from variant to transcript,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -52,csq_strand,csq_strand,Strand,Y,1,variant,VEP,v101,Strand of the feature,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -53,csq_canonical,csq_canonical,Canonical Transcript (Boolean),Y,YES,variant,VEP,v101,Indicates if transcript is canonical for this gene,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used in title if True, -54,csq_most_severe,csq_most_severe,Most Severe Transcript (Boolean),Y,1,variant,VEP,v101,Indicates if transcript is most severe for this gene,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -55,csq_tsl,csq_tsl,Transcript support level,N,.&NA,variant,VEP,v101,Transcript support level,integer,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,Maybe a bug (multiple values associated with a transcript),, -56,csq_ccds,csq_ccds,CCDS ID,Y,CCDS30547.1,variant,VEP,v101,Consensus coding sequence (CCDS) database ID,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.ncbi.nlm.nih.gov/CCDS/CcdsBrowse.cgi?REQUEST=CCDS&DATA=,,, -57,csq_ensp,csq_ensp,Protein ID (Ensembl),Y,ENSP00000493376,variant,VEP,v101,Protein identifer,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,http://useast.ensembl.org/Homo_sapiens/Transcript/ProteinSummary?p=,,, -58,csq_swissprot,csq_swissprot,Protein ID (UniProtKB/Swiss-Prot),Y,P0DMR1&B7ZW38,variant,VEP,v101,UniProtKB/Swiss-Prot accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.uniprot.org/uniprot/,,, -59,csq_trembl,csq_trembl,Protein ID (UniProtKB/TrEMBL),Y,A0A2R8Y7R4&M4WDD3,variant,VEP,v101,UniProtKB/TrEMBL accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.uniprot.org/uniprot/,,, -60,csq_uniparc,csq_uniparc,Protein ID (UniParc),Y,UPI000D1938F0,variant,VEP,v101,UniParc accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -63,csq_domains,csq_domains,,Y,Prints:PR00237&Gene3D:1.20.1070.10&Pfam:PF13853&PROSITE_profiles:PS50262&Superfamily:SSF81321&Transmembrane_helices:TMhelix&CDD:cd15226&Low_complexity_(Seg):seg,variant,VEP,v101,The source and identifer of any overlapping protein domains,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,,vep,,,,,,,,,,links to several dbs. Figure out how to link them. (missing in examples so far.),, -64,csq_hgvs_offset,csq_hgvs_offset,,Y,5,variant,VEP,v101,"Indicates by how many bases the HGVS notations for this variant have been shifted, for indels",string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -65,csq_pubmed,csq_pubmed,,Y,21159730&21492446&23664118&19096721,variant,VEP,v101,Pubmed ID(s) of publications that cite existing variant,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,,vep,,,,,,,,,,link needed (missing in examples so far),, -66,csq_maxentscan_alt,csq_maxentscan_alt,MaxEntScan - Alt,Y,9.444,variant,MaxEnt,v20040421,MaxEntScan alternate sequence score,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,Splicing, -67,csq_maxentscan_diff,csq_maxentscan_diff,MaxEntScan,Y,-0.274,variant,MaxEnt,v20040421,MaxEntScan score difference,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,copy to worst effect transcript gene also for filtering,, -68,csq_maxentscan_ref,csq_maxentscan_ref,MaxEntScan - Ref,Y,9.171,variant,MaxEnt,v20040421,MaxEntScan reference sequence score,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -69,csq_tssdistance,csq_tssdistance,,Y,1863,variant,VEP,v101,Distance from the transcription start site,integer,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,, -70,genes_most_severe_gene,genes_most_severe_gene,Gene,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,Gene,,,,,, -71,genes_most_severe_gene.s_het,genes_most_severe_gene.s_het,S_het,Y,0.712744609;0.687495742;0.660254755;0.639410094;0.620360495;0.616952455;0.615396766;0.608889049;0.598649548;0.586267656;0.583941063;0.573090113;0.552121239;0.547772441;0.547290214;0.547052978;0.542223592;0.541479417;0.536996463,variant,CassaNatGenet2017,04/03/2017,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,3,genes,,,,,,,Y,,,,, -72,genes_most_severe_gene.oe_mis,genes_most_severe_gene.oe_mis,o/e (missense),Y,,variant,gnomADmetrics,v2.1.1,Observed/Expected Missense,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,, -73,genes_most_severe_gene.oe_lof,genes_most_severe_gene.oe_lof,o/e (LoF),Y,,variant,gnomADmetrics,v2.1.1,Observed/Expected Loss of function,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,, -74,genes_most_severe_gene.oe_lof_upper,genes_most_severe_gene.oe_lof_upper,LOEUF,Y,,variant,gnomADmetrics,v2.1.1,"loss-of-function observed/expected upper bound fraction, is a metric that is developed by the gnomAD team and supersedes pLI. See gnomAD FAQs (https://gnomad.broadinstitute.org/faq) for more information.",number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,, -75,genes_most_severe_transcript,genes_most_severe_transcript,Transcript,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,, -76,genes_most_severe_feature_ncbi,genes_most_severe_feature_ncbi,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,,,,,,,,,,,,,, -77,genes_most_severe_hgvsc,genes_most_severe_hgvsc,Coding Sequence,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,, -78,genes_most_severe_hgvsp,genes_most_severe_hgvsp,Protein Sequence,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,, -79,genes_most_severe_amino_acids,genes_most_severe_amino_acids,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,,,,,,,,,,,,,, -80,genes_most_severe_sift_score,genes_most_severe_sift_score,SIFT score,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Missense, -81,genes_most_severe_polyphen_score,genes_most_severe_polyphen_score,PolyPhen score,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Missense, -82,genes_most_severe_maxentscan_diff,genes_most_severe_maxentscan_diff,MaxEntScan Diff,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Splicing, -83,genes_most_severe_consequence,genes_most_severe_consequence,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,VariantConsequence,,,,,, -84,genes_most_severe_consequence.display_title,genes_most_severe_consequence.display_title,Consequence,Y,,variant,,,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,, -85,genes_most_severe_consequence.impact,genes_most_severe_consequence.impact,Impact,Y,,variant,,,Impact on worst effect transcript,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,, -86,genes_most_severe_consequence.location,genes_most_severe_consequence.location,Location,Y,,variant,,,Location on worst effect transcript ,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,, -87,genes_most_severe_consequence.coding_effect,genes_most_severe_consequence.coding_effect,Coding Effect,Y,,variant,,,Coding effect on worst effect transcript,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,, -88,genes_most_severe_gene.gene_lists.display_title,genes_ensg.gene_lists.display_title,Gene List,Y,,variant,,,Gene lists,string,"{""key"": ""genes"", ""title"": ""Gene""}",Y,0,calculated_property,,,,,,,Y,,,,, -90,csq_phastcons100way_vertebrate,csq_phastcons100verts,PhastCons (100 Vertebrates),Y,0,variant,UCSC - VEP,hg38,PhastCons 100 way score,number,,N,,,,,,,,,,,,,, -91,csq_phylop100way_vertebrate,csq_phylop100verts,PhyloP (100 Vertebrates),Y,-0.684,variant,UCSC - VEP,hg38,PhyloP 100 way score,number,,N,3,phyloP,,,-20,10,,,,,,,Conservation,PhyloP100 -,csq_phylop100way_vertebrate_rankscore,csq_phylop100way_vertebrate_rankscore,PhyloP (100 Vertebrates) rankscore,Y,10.40694444,variant,dbNSFP,v4.1a,PhyloP 100 way rankscore,number,,N,,,,,,,,,,,,,, -92,csq_phylop30way_mammalian,csq_phylop30mams,PhyloP (30 Mammals),Y,-0.327,variant,UCSC - VEP,hg38,PhyloP 30 way score,number,,N,,,,,,,,,,,,,, -93,csq_gerp_rs,csq_gerp++_rs,Gerp++ score,Y,1.15,variant,dbNSFP,v4.1a,GERP score,number,,N,,,,,,,,,,,,,Conservation, -,csq_gerp_rs_rankscore,csq_gerp++_rs_rankscore,Gerp++ rankscore,Y,20.66458333,variant,dbNSFP,v4.1a,GERP rankscore,number,,N,,,,,,,,,,,,,, -94,csq_siphy_29way_logodds,csq_siphy_29way_logodds,SiPhy (Omega),Y,4.1978,variant,dbNSFP,v4.1a,Siphy omega score,number,,N,,,,,,,,,,,,,, -95,csq_siphy_29way_pi,csq_siphy_29way_pi,SiPhy (p-value),Y,0.1516:0.0:0.6258:0.2226,variant,dbNSFP,v4.1a,Siphy p score,number,,N,,,,,,,,,,,,,, -96,csq_primateai_score,csq_primateai_score,PrimateAI score,Y,0.6325855851,variant,dbNSFP,v4.1a,PrimateAI score,number,,N,,,,,,,,,,,,,, -,csq_primateai_pred,csq_primateai_pred,PrimateAI prediction,Y,T,variant,dbNSFP,v4.1a,PrimateAI prediction,string,,N,,,,,,,,,,,,,, -,csq_primateai_rankscore,csq_primateai_rankscore,PrimateAI rankscore,Y,11.98333333,variant,dbNSFP,v4.1a,PrimateAI rankscore,number,,N,,,,,,,,,,,,,, -97,csq_cadd_phred,csq_cadd_phred,CADD Phred score,Y,2.209,variant,CADD,v1.6,CADD Phred score,number,,N,3,CADD,,,,,,,,,,,, -,csq_cadd_raw_rankscore,csq_cadd_raw_rankscore,CADD rankscore,Y,48.46666667,variant,dbNSFP,v4.1a,CADD rankscore,number,,N,,,,,,,,,,,,,, -,csq_polyphen2_hvar_pred,csq_polyphen2_hvar_pred,PolyPhen 2 prediction,Y,D,variant,dbNSFP,v4.1a,PolyPhen 2 prediction,string,,N,,,,,,,,,,,,,, -,csq_polyphen2_hvar_rankscore,csq_polyphen2_hvar_rankscore,PolyPhen 2 rankscore,Y,52.85625,variant,dbNSFP,v4.1a,PolyPhen 2 rankscore,number,,N,,,,,,,,,,,,,, -,csq_polyphen2_hvar_score,csq_polyphen2_hvar_score,PolyPhen 2 score,Y,0.9,variant,dbNSFP,v4.1a,PolyPhen 2 score,number,,N,,,,,,,,,,,,,, -,csq_sift_pred,csq_sift_pred,SIFT prediction,Y,D,variant,dbNSFP,v4.1a,SIFT prediction,string,,N,,,,,,,,,,,,,, -,csq_sift_converted_rankscore,csq_sift_converted_rankscore,SIFT rankscore,Y,36.925,variant,dbNSFP,v4.1a,SIFT rankscore,number,,N,,,,,,,,,,,,,, -,csq_sift_score,csq_sift_score,SIFT score,Y,0.012,variant,dbNSFP,v4.1a,SIFT score,number,,N,,,,,,,,,,,,,, -,csq_revel_rankscore,csq_revel_rankscore,REVEL rankscore,Y,0.15359,variant,dbNSFP,v4.1a,REVEL rankscore,number,,N,,,,,,,,,,,,,, -,csq_revel_score,csq_revel_score,REVEL score,Y,0.053,variant,dbNSFP,v4.1a,REVEL score,number,,N,,,,,,,,,,,,,, -98,csq_spliceai_pred_symbol,csq_spliceai_pred_symbol,SpliceAI Gene,Y,OR4F5,variant,SpliceAI,v1.3,affected gene symbol,string,,N,,,,,,,,,,,,,Splicing, -99,csq_spliceai_pred_ds_ag,csq_spliceai_pred_ds_ag,SpliceAI Delta Score Acceptor Gain,Y,0.01,variant,SpliceAI,v1.3,delta scores (DS) for acceptor gain (AG),number,,N,,,,,0,1,,,,,,,Splicing ?, -100,csq_spliceai_pred_ds_al,csq_spliceai_pred_ds_al,SpliceAI Delta Score Acceptor Loss,Y,0.08,variant,SpliceAI,v1.3,delta scores (DS) for acceptor loss (AL),number,,N,,,,,0,1,,,,,,,Splicing ?, -101,csq_spliceai_pred_ds_dg,csq_spliceai_pred_ds_dg,SpliceAI Delta Score Donor Gain,Y,0,variant,SpliceAI,v1.3,delta scores (DS) for donor gain (DG),number,,N,,,,,0,1,,,,,,,Splicing ?, -102,csq_spliceai_pred_ds_dl,csq_spliceai_pred_ds_dl,SpliceAI Delta Score Donor Loss,Y,0,variant,SpliceAI,v1.3,delta scores (DS) for donor loss (DL),number,,N,,,,,0,1,,,,,,,Splicing ?, -103,csq_spliceai_pred_dp_ag,csq_spliceai_pred_dp_ag,SpliceAI Delta Position Acceptor Gain,Y,-10,variant,SpliceAI,v1.3,delta positions (DP) for acceptor gain (AG),integer,,N,,,,,,,,,,,,,Splicing ?, -104,csq_spliceai_pred_dp_al,csq_spliceai_pred_dp_al,SpliceAI Delta Position Acceptor Loss,Y,26,variant,SpliceAI,v1.3,delta positions (DP) for acceptor loss (AL),integer,,N,,,,,,,,,,,,,Splicing ?, -105,csq_spliceai_pred_dp_dg,csq_spliceai_pred_dp_dg,SpliceAI Delta Position Donor Gain,Y,-28,variant,SpliceAI,v1.3,delta positions (DP) for donor gain (DG),integer,,N,,,,,,,,,,,,,Splicing ?, -106,csq_spliceai_pred_dp_dl,csq_spliceai_pred_dp_dl,SpliceAI Delta Position Donor Loss,Y,-25,variant,SpliceAI,v1.3,delta positions (DP) for donor loss (DL),integer,,N,,,,,,,,,,,,,Splicing ?, -107,spliceaiMaxds,spliceaiMaxds,SpliceAI Max Delta,Y,0.8,variant,,,maximum delta scores,number,,N,4,spliceAI,,0,,,,,,,,,Splicing, -108,csq_gnomadg_ac,csq_gnomadg_ac,GnomAD Alt Allele Count,Y,10088,variant,gnomAD,v3.1,Alternate allele count for samples,integer,,N,,,,,0,,,,,,,,GnomAD, -109,csq_gnomadg_af_popmax,csq_gnomadg_af_popmax,GnomAD Alt AF - PopMax,Y,0.636029,variant,gnomAD,v3.1,maximum population allele frequency from gnomAD gnome v3.0,number,,N,4,manual / gnomad,,,0,1,,,,,,,,PopMax AF -110,csq_gnomadg_ac-afr,csq_gnomadg_ac-afr,GnomAD Alt AC - African-American/African,Y,2444,variant,gnomAD,v3.1,Alternate allele count for samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -111,csq_gnomadg_ac-ami,csq_gnomadg_ac-ami,GnomAD Alt AC - Amish,Y,41,variant,gnomAD,v3.1,Alternate allele count for samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -112,csq_gnomadg_ac-amr,csq_gnomadg_ac-amr,GnomAD Alt AC - Latino,Y,926,variant,gnomAD,v3.1,Alternate allele count for samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -113,csq_gnomadg_ac-asj,csq_gnomadg_ac-asj,GnomAD Alt AC - Ashkenazi Jewish,Y,310,variant,gnomAD,v3.1,Alternate allele count for samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -114,csq_gnomadg_ac-eas,csq_gnomadg_ac-eas,GnomAD Alt AC - East Asian,Y,242,variant,gnomAD,v3.1,Alternate allele count for samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -115,csq_gnomadg_ac-fin,csq_gnomadg_ac-fin,GnomAD Alt AC - Finnish,Y,294,variant,gnomAD,v3.1,Alternate allele count for samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -116,csq_gnomadg_ac-nfe,csq_gnomadg_ac-nfe,GnomAD Alt AC - Non-Finnish European,Y,5363,variant,gnomAD,v3.1,Alternate allele count for samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -117,csq_gnomadg_ac-sas,csq_gnomadg_ac-sas,GnomAD Alt AC - South Asian,Y,282,variant,gnomAD,v3.1,Alternate allele count for samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -118,csq_gnomadg_ac-oth,csq_gnomadg_ac-oth,GnomAD Alt AC - Other Ancestry,Y,174,variant,gnomAD,v3.1,Alternate allele count for samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -,csq_gnomadg_ac-mid,csq_gnomadg_ac-mid,GnomAD Alt AC - Middle Eastern,Y,174,variant,gnomAD,v3.1,Alternate allele count for samples of Other ancestry,integer,,N,,,,,,,,,,,,,, -119,csq_gnomadg_ac-xy,csq_gnomadg_ac-xy,GnomAD Alt AC - male,Y,4702,variant,gnomAD,v3.1,Alternate allele count for male samples,integer,,N,,,,,0,,,,,,,,GnomAD, -120,csq_gnomadg_ac-xx,csq_gnomadg_ac-xx,GnomAD Alt AC - female,Y,5386,variant,gnomAD,v3.1,Alternate allele count for female samples,integer,,N,,,,,0,,,,,,,,GnomAD, -121,csq_gnomadg_an-afr,csq_gnomadg_an-afr,GnomAD Total AN - African-American/African,Y,3902,variant,gnomAD,v3.1,Total number of alleles in samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -122,csq_gnomadg_an-ami,csq_gnomadg_an-ami,GnomAD Total AN - Amish,Y,70,variant,gnomAD,v3.1,Total number of alleles in samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -123,csq_gnomadg_an,csq_gnomadg_an,GnomAD Total Allele Number,Y,16086,variant,gnomAD,v3.1,Total number of alleles in samples,integer,,N,4,gnomad,,,0,,,,,,,,GnomAD, -124,csq_gnomadg_an-amr,csq_gnomadg_an-amr,GnomAD Total AN - Latino,Y,1460,variant,gnomAD,v3.1,Total number of alleles in samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -125,csq_gnomadg_an-asj,csq_gnomadg_an-asj,GnomAD Total AN - Ashkenazi Jewish,Y,474,variant,gnomAD,v3.1,Total number of alleles in samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -126,csq_gnomadg_an-eas,csq_gnomadg_an-eas,GnomAD Total AN - East Asian,Y,428,variant,gnomAD,v3.1,Total number of alleles in samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -127,csq_gnomadg_an-fin,csq_gnomadg_an-fin,GnomAD Total AN - Finnish,Y,560,variant,gnomAD,v3.1,Total number of alleles in samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -128,csq_gnomadg_an-nfe,csq_gnomadg_an-nfe,GnomAD Total AN - Non-Finnish European,Y,8432,variant,gnomAD,v3.1,Total number of alleles in samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -129,csq_gnomadg_an-sas,csq_gnomadg_an-sas,GnomAD Total AN - South Asian,Y,446,variant,gnomAD,v3.1,Total number of alleles in samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -130,csq_gnomadg_an-oth,csq_gnomadg_an-oth,GnomAD Total AN - Other Ancestry,Y,282,variant,gnomAD,v3.1,Total number of alleles in samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -,csq_gnomadg_an-mid,csq_gnomadg_an-mid,GnomAD Total AN - Middle Eastern,Y,282,variant,gnomAD,v3.1,Total number of alleles in samples of Other ancestry,integer,,N,,,,,,,,,,,,,, -131,csq_gnomadg_an-xy,csq_gnomadg_an-xy,GnomAD Total AN - male,Y,7514,variant,gnomAD,v3.1,Total number of alleles in male samples,integer,,N,,,,,0,,,,,,,,GnomAD, -132,csq_gnomadg_an-xx,csq_gnomadg_an-xx,GnomAD Total AN - female,Y,8572,variant,gnomAD,v3.1,Total number of alleles in female samples,integer,,N,,,,,0,,,,,,,,GnomAD, -133,csq_gnomadg_af-afr,csq_gnomadg_af-afr,GnomAD Alt AF - African-American/African,Y,0.626345,variant,gnomAD,v3.1,Alternate allele frequency in samples of African-American/African ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -134,csq_gnomadg_af-ami,csq_gnomadg_af-ami,GnomAD Alt AF - Amish,Y,0.585714,variant,gnomAD,v3.1,Alternate allele frequency in samples of Amish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -135,csq_gnomadg_af-amr,csq_gnomadg_af-amr,GnomAD Alt AF - Latino,Y,0.634247,variant,gnomAD,v3.1,Alternate allele frequency in samples of Latino ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -136,csq_gnomadg_af,csq_gnomadg_af,GnomAD Alt Allele Frequency,Y,0.627129,variant,gnomAD,v3.1,Alternate allele frequency in samples,number,,N,4,gnomad,,,0,1,,,,,,,GnomAD, -137,csq_gnomadg_af-asj,csq_gnomadg_af-asj,GnomAD Alt AF - Ashkenazi Jewish,Y,0.654008,variant,gnomAD,v3.1,Alternate allele frequency in samples of Ashkenazi Jewish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,AF -138,csq_gnomadg_af-eas,csq_gnomadg_af-eas,GnomAD Alt AF - East Asian,Y,0.565421,variant,gnomAD,v3.1,Alternate allele frequency in samples of East Asian ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -139,csq_gnomadg_af-fin,csq_gnomadg_af-fin,GnomAD Alt AF - Finnish,Y,0.525,variant,gnomAD,v3.1,Alternate allele frequency in samples of Finnish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -140,csq_gnomadg_af-nfe,csq_gnomadg_af-nfe,GnomAD Alt AF - Non-Finnish European,Y,0.636029,variant,gnomAD,v3.1,Alternate allele frequency in samples of Non-Finnish European ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -141,csq_gnomadg_af-sas,csq_gnomadg_af-sas,GnomAD Alt AF - South Asian,Y,0.632287,variant,gnomAD,v3.1,Alternate allele frequency in samples of South Asian ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -142,csq_gnomadg_af-oth,csq_gnomadg_af-oth,GnomAD Alt AF - Other Ancestry,Y,0.617021,variant,gnomAD,v3.1,Alternate allele frequency in samples of Other ancestry,number,,N,,,,,0,1,,,,,,,GnomAD, -,csq_gnomadg_af-mid,csq_gnomadg_af-mid,GnomAD Alt AF - Middle Eastern,Y,0.617021,variant,gnomAD,v3.1,Alternate allele frequency in samples of Other ancestry,number,,N,,,,,,,,,,,,,, -143,csq_gnomadg_af-xy,csq_gnomadg_af-xy,GnomAD Alt AF - male,Y,0.625765,variant,gnomAD,v3.1,Alternate allele frequency in male samples,number,,N,,,,,0,1,,,,,,,GnomAD, -144,csq_gnomadg_af-xx,csq_gnomadg_af-xx,GnomAD Alt AF - female,Y,0.628325,variant,gnomAD,v3.1,Alternate allele frequency in female samples,number,,N,,,,,0,1,,,,,,,GnomAD, -145,csq_gnomadg_nhomalt-afr,csq_gnomadg_nhomalt-afr,GnomAD Homozygous Count - African-American/African,Y,629,variant,gnomAD,v3.1,Count of homozygous individuals in samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -146,csq_gnomadg_nhomalt-ami,csq_gnomadg_nhomalt-ami,GnomAD Homozygous Count - Amish,Y,10,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -147,csq_gnomadg_nhomalt-amr,csq_gnomadg_nhomalt-amr,GnomAD Homozygous Count - Latino,Y,262,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -148,csq_gnomadg_nhomalt,csq_gnomadg_nhomalt,GnomAD Homozygous Count,Y,2613,variant,gnomAD,v3.1,Count of homozygous individuals in samples,integer,,N,4,gnomad,,,0,,,,,,,,GnomAD, -149,csq_gnomadg_nhomalt-asj,csq_gnomadg_nhomalt-asj,GnomAD Homozygous Count - Ashkenazi Jewish,Y,84,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -150,csq_gnomadg_nhomalt-eas,csq_gnomadg_nhomalt-eas,GnomAD Homozygous Count - East Asian,Y,55,variant,gnomAD,v3.1,Count of homozygous individuals in samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -151,csq_gnomadg_nhomalt-fin,csq_gnomadg_nhomalt-fin,GnomAD Homozygous Count - Finnish,Y,62,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -152,csq_gnomadg_nhomalt-nfe,csq_gnomadg_nhomalt-nfe,GnomAD Homozygous Count - Non-Finnish European,Y,1390,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -153,csq_gnomadg_nhomalt-sas,csq_gnomadg_nhomalt-sas,GnomAD Homozygous Count - South Asian,Y,75,variant,gnomAD,v3.1,Count of homozygous individuals in samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -154,csq_gnomadg_nhomalt-oth,csq_gnomadg_nhomalt-oth,GnomAD Homozygous Count - Other Ancestry,Y,42,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD, -,csq_gnomadg_nhomalt-mid,csq_gnomadg_nhomalt-mid,GnomAD Homozygous Count - Middle Eastern,Y,42,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Other ancestry,integer,,N,,,,,,,,,,,,,, -155,csq_gnomadg_nhomalt-xy,csq_gnomadg_nhomalt-xy,GnomAD Homozygous Count - male,Y,1223,variant,gnomAD,v3.1,Count of homozygous individuals in male samples,integer,,N,,,,,0,,,,,,,,GnomAD, -156,csq_gnomadg_nhomalt-xx,csq_gnomadg_nhomalt-xx,GnomAD Homozygous Count - female,Y,1390,variant,gnomAD,v3.1,Count of homozygous individuals in female samples,integer,,N,,,,,0,,,,,,,,GnomAD, -157,csq_clinvar,csq_clinvar,Clinvar ID,Y,402986,variant,ClinVar,v20201101,ClinVar variantion ID,string,,N,3,clinvar,,,,,,,,,https://www.ncbi.nlm.nih.gov/clinvar/variation//,,, -158,csq_clinvar_clndn,csq_clinvar_clndn,,Y,not_specified¬_provided,variant,ClinVar,v20201101,ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB,string,,Y,,,,,,,,,,,,,, -159,csq_clinvar_clndnincl,csq_clinvar_clndnincl,,Y,Encephalopathy&_acute&_infection-induced&_4&_susceptibility_to,variant,ClinVar,v20201101,For included Variant : ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB,string,,N,,,,,,,,,,,,,, -160,csq_clinvar_clndisdb,csq_clinvar_clndisdb,,Y,MedGen:CN169374&MedGen:CN517202,variant,ClinVar,v20201101,"Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN",string,,Y,,,,,,,,,,,,,, -161,csq_clinvar_clndisdbincl,csq_clinvar_clndisdbincl,,Y,MONDO:MONDO:0013633&MedGen:C3280160&OMIM:614212,variant,ClinVar,v20201101,"For included Variant: Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN",string,,Y,,,,,,,,,,,,,, -163,csq_clinvar_clnrevstat,csq_clinvar_clnrevstat,,Y,criteria_provided&_single_submitter,variant,ClinVar,v20201101,ClinVar review status for the Variation ID,string,,Y,,,,,,,,,,,,,, -164,csq_clinvar_clnsig,csq_clinvar_clnsig,Clinvar,Y,Conflicting_interpretations_of_pathogenicity&_other,variant,ClinVar,v20201101,Clinical significance for this single variant,string,,N,3,clinvar,,,,,,,,,,,, -165,csq_clinvar_clnsigconf,csq_clinvar_clnsigconf,,Y,Benign(3)&Uncertain_significance(1),variant,ClinVar,v20201101,Conflicting clinical significance for this single variant,string,,Y,,,,,,,,,,,,,, -166,csq_clinvar_clnsigincl,csq_clinvar_clnsigincl,,Y,16318:Pathogenic/Likely_pathogenic&217371:Pathogenic,variant,ClinVar,v20201101,Clinical significance for a haplotype or genotype that includes this variant. Reported as pairs of VariationID:clinical significance.,string,,Y,,,,,,,,,,,,,, -167,csq_clinvar_clnvc,csq_clinvar_clnvc,,Y,single_nucleotide_variant,variant,ClinVar,v20201101,Variant type,string,,N,,,,,,,,,,,,,, -168,csq_clinvar_clnvcso,csq_clinvar_clnvcso,,Y,SO:0001483,variant,ClinVar,v20201101,Sequence Ontology id for variant type,string,,N,,,,,,,,,,,,,, -169,csq_clinvar_geneinfo,csq_clinvar_geneinfo,,Y,TARDBP:23435&MASP2:10747,variant,ClinVar,v20201101,Gene(s) for the variant reported as gene symbol:gene id. The gene symbol and id are delimited by a colon (:) and each pair is delimited by a vertical bar (|),string,,Y,,,,,,,,,,,,,, -170,csq_clinvar_mc,csq_clinvar_mc,,Y,SO:0001583&missense_variant,variant,ClinVar,v20201101,Sequence Ontology ID list,string,,Y,,,,,,,,,,,,,, -171,csq_clinvar_origin,csq_clinvar_origin,,Y,1,variant,ClinVar,v20201101,Allele origin. One or more of the following values may be added: 0 - unknown; 1 - germline; 2 - somatic; 4 - inherited; 8 - paternal; 16 - maternal; 32 - de-novo; 64 - biparental; 128 - uniparental; 256 - not-tested; 512 - tested-inconclusive; 1073741824 - other,integer,,N,,,,,,,,,,,,,, -172,comhet_phase,comhet_phase,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het, -173,comhet_gene,comhet_gene,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het, -174,comhet_transcript,comhet_transcript,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",Y,,,,,,,,,,,,,Comp Het, -175,comhet_impact_gene,comhet_impact_gene,ComHet Impact,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,4,comhet,,,,,,,,,,,Comp Het, -176,comhet_impact_transcript,comhet_impact_transcript,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het, -177,comhet_mate_variant,comhet_mate_variant,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het, -178,csq_gnomade2_ac,csq_gnomade2_ac,GnomADv2 Exome Alt Allele Count,Y,70&1080,variant,gnomAD,v2.1.1,Alternate allele count for samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -179,csq_gnomade2_an,csq_gnomade2_an,GnomADv2 Exome Total Allele Number,Y,112538&90228,variant,gnomAD,v2.1.1,Total number of alleles in samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -180,csq_gnomade2_af,csq_gnomade2_af,GnomADv2 Exome Alt Allele Frequency,Y,6.22012e-04&1.19697e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -181,csq_gnomade2_nhomalt,csq_gnomade2_nhomalt,GnomADv2 Exome Homozygous Count,Y,8&328,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -182,csq_gnomade2_ac-oth,csq_gnomade2_ac_oth,GnomADv2 Exome Alt AC - Other Ancestry,Y,0&27,variant,gnomAD,v2.1.1,Alternate allele count for samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -183,csq_gnomade2_an-oth,csq_gnomade2_an_oth,GnomADv2 Exome Total AN - Other Ancestry,Y,3252&2610,variant,gnomAD,v2.1.1,Total number of alleles in samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -184,csq_gnomade2_af-oth,csq_gnomade2_af_oth,GnomADv2 Exome Alt AF - Other Ancestry,Y,0.00000e+00&1.03448e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Other ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -185,csq_gnomade2_nhomalt-oth,csq_gnomade2_nhomalt_oth,GnomADv2 Exome Homozygous Count - Other Ancestry,Y,0&9,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -186,csq_gnomade2_ac-sas,csq_gnomade2_ac_sas,GnomADv2 Exome Alt AC - South Asian,Y,1&27,variant,gnomAD,v2.1.1,Alternate allele count for samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -187,csq_gnomade2_an-sas,csq_gnomade2_an_sas,GnomADv2 Exome Total AN - South Asian,Y,18838&11354,variant,gnomAD,v2.1.1,Total number of alleles in samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -188,csq_gnomade2_af-sas,csq_gnomade2_af_sas,GnomADv2 Exome Alt AF - South Asian,Y,5.30842e-05&2.37802e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of South Asian ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -189,csq_gnomade2_nhomalt-sas,csq_gnomade2_nhomalt_sas,GnomADv2 Exome Homozygous Count - South Asian,Y,0&11,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -190,csq_gnomade2_ac-fin,csq_gnomade2_ac_fin,GnomADv2 Exome Alt AC - Finnish,Y,0&22,variant,gnomAD,v2.1.1,Alternate allele count for samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -191,csq_gnomade2_an-fin,csq_gnomade2_an_fin,GnomADv2 Exome Total AN - Finnish,Y,4844&2844,variant,gnomAD,v2.1.1,Total number of alleles in samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -192,csq_gnomade2_af-fin,csq_gnomade2_af_fin,GnomADv2 Exome Alt AF - Finnish,Y,0.00000e+00&7.73558e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Finnish ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -193,csq_gnomade2_nhomalt-fin,csq_gnomade2_nhomalt_fin,GnomADv2 Exome Homozygous Count - Finnish,Y,0&7,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -194,csq_gnomade2_ac-eas,csq_gnomade2_ac_eas,GnomADv2 Exome Alt AC - East Asian,Y,0&0,variant,gnomAD,v2.1.1,Alternate allele count for samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -195,csq_gnomade2_an-eas,csq_gnomade2_an_eas,GnomADv2 Exome Total AN - East Asian,Y,6638&10934,variant,gnomAD,v2.1.1,Total number of alleles in samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -196,csq_gnomade2_af-eas,csq_gnomade2_af_eas,GnomADv2 Exome Alt AF - East Asian,Y,0.00000e+00&0.00000e+00,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of East Asian ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -197,csq_gnomade2_nhomalt-eas,csq_gnomade2_nhomalt_eas,GnomADv2 Exome Homozygous Count - East Asian,Y,0&0,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -198,csq_gnomade2_ac-amr,csq_gnomade2_ac_amr,GnomADv2 Exome Alt AC - Latino,Y,12&131,variant,gnomAD,v2.1.1,Alternate allele count for samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -199,csq_gnomade2_an-amr,csq_gnomade2_an_amr,GnomADv2 Exome Total AN - Latino,Y,19308&18214,variant,gnomAD,v2.1.1,Total number of alleles in samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -200,csq_gnomade2_af-amr,csq_gnomade2_af_amr,GnomADv2 Exome Alt AF - Latino,Y,6.21504e-04&7.19227e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Latino ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -201,csq_gnomade2_nhomalt-amr,csq_gnomade2_nhomalt_amr,GnomADv2 Exome Homozygous Count - Latino,Y,3&45,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -202,csq_gnomade2_ac-afr,csq_gnomade2_ac_afr,GnomADv2 Exome Alt AC - African-American/African,Y,56&16,variant,gnomAD,v2.1.1,Alternate allele count for samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -203,csq_gnomade2_an-afr,csq_gnomade2_an_afr,GnomADv2 Exome Total AN - African-American/African,Y,9008&1548,variant,gnomAD,v2.1.1,Total number of alleles in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -204,csq_gnomade2_af-afr,csq_gnomade2_af_afr,GnomADv2 Exome Alt AF - African-American/African,Y,6.21670e-03&1.03359e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -205,csq_gnomade2_nhomalt-afr,csq_gnomade2_nhomalt_afr,GnomADv2 Exome Homozygous Count - African-American/African,Y,5&7,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -206,csq_gnomade2_ac-asj,csq_gnomade2_ac_asj,GnomADv2 Exome Alt AC - Ashkenazi Jewish,Y,0&69,variant,gnomAD,v2.1.1,Alternate allele count for samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -207,csq_gnomade2_an-asj,csq_gnomade2_an_asj,GnomADv2 Exome Total AN - Ashkenazi Jewish,Y,5302&4822,variant,gnomAD,v2.1.1,Total number of alleles in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -208,csq_gnomade2_af-asj,csq_gnomade2_af_asj,GnomADv2 Exome Alt AF - Ashkenazi Jewish,Y,0.00000e+00&1.43094e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -209,csq_gnomade2_nhomalt-asj,csq_gnomade2_nhomalt_asj,GnomADv2 Exome Homozygous Count - Ashkenazi Jewish,Y,0&24,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -210,csq_gnomade2_ac-nfe,csq_gnomade2_ac_nfe,GnomADv2 Exome Alt AC - Non-Finnish European,Y,1&788,variant,gnomAD,v2.1.1,Alternate allele count for samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -211,csq_gnomade2_an-nfe,csq_gnomade2_an_nfe,GnomADv2 Exome Total AN - Non-Finnish European,Y,45348&37902,variant,gnomAD,v2.1.1,Total number of alleles in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -212,csq_gnomade2_af-nfe,csq_gnomade2_af_nfe,GnomADv2 Exome Alt AF - Non-Finnish European,Y,2.20517e-05&2.07905e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -213,csq_gnomade2_nhomalt-nfe,csq_gnomade2_nhomalt_nfe,GnomADv2 Exome Homozygous Count - Non-Finnish European,Y,0&225,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -214,csq_gnomade2_ac-xx,csq_gnomade2_ac_female,GnomADv2 Exome Alt AC - female,Y,43&503,variant,gnomAD,v2.1.1,Alternate allele count for female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -215,csq_gnomade2_an-xx,csq_gnomade2_an_female,GnomADv2 Exome Total AN - female,Y,50300&41370,variant,gnomAD,v2.1.1,Total number of alleles in female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -216,csq_gnomade2_af-xx,csq_gnomade2_af_female,GnomADv2 Exome Alt AF - female,Y,8.54871e-04&1.21586e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in female samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -217,csq_gnomade2_nhomalt-xx,csq_gnomade2_nhomalt_female,GnomADv2 Exome Homozygous Count - female,Y,5&157,variant,gnomAD,v2.1.1,Count of homozygous individuals in female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -218,csq_gnomade2_ac-xy,csq_gnomade2_ac_male,GnomADv2 Exome Alt AC - male,Y,27&577,variant,gnomAD,v2.1.1,Alternate allele count for male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -219,csq_gnomade2_an-xy,csq_gnomade2_an_male,GnomADv2 Exome Total AN - male,Y,62238&48858,variant,gnomAD,v2.1.1,Total number of alleles in male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -220,csq_gnomade2_af-xy,csq_gnomade2_af_male,GnomADv2 Exome Alt AF - male,Y,4.33819e-04&1.18097e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in male samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, -221,csq_gnomade2_nhomalt-xy,csq_gnomade2_nhomalt_male,GnomADv2 Exome Homozygous Count - male,Y,3&171,variant,gnomAD,v2.1.1,Count of homozygous individuals in male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,, -222,csq_gnomade2_af_popmax,csq_gnomade2_af_popmax,GnomADv2 Exome Alt AF - PopMax,Y,6.21670e-03&2.07905e-02,variant,gnomAD,v2.1.1,maximum population allele frequency in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,, \ No newline at end of file +,#FILEFORMAT=annV0.5.4,,,,,,,,,,,,,,,,,,,,,,,,,, +,#FILEDATE=06.23.2021,,,,,,,,,,,,,,,,,,,,,,,,,, +no,field_name,vcf_field,schema_title,do_import,value_example,scope,source_name,source_version,description,field_type,sub_embedding_group,is_list,priority,source,pattern,default,min,max,enum_list,links_to,embedded_field,calculated_property,link,comments,annotation_space_location,abbreviation,add_no_value +1,CHROM,CHROM,Chromosome,Y,1;2;3;4;5;6;22;X;Y;M,variant,VCF,VCFv4.2,Chromosome,string,,N,5,VCF,,,,,"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,X,Y,M",,,,,,Position,, +2,POS,POS,Position,Y,949608,variant,VCF,VCFv4.2,Position,integer,,N,5,VCF,,,0,,,,,,,,Position - maybe later,, +3,ID,ID,dbSNP ID,Y,rs1921;rs1922;rs1923,variant,NCBI dbSNP,v151 (all variants),dbSNP ID,string,,N,3,manual - dbSNP_ID_fixer.py,,,,,,,,,,,,, +4,REF,REF,Ref,Y,G,variant,VCF,VCFv4.2,Reference allele,string,,N,5,VCF,,,,,,,,,,,Position - maybe later,, +5,ALT,ALT,Alt,Y,A;T;C;G;GAAATCA,variant,VCF,VCFv4.2,Alternative allele,string,,N,5,VCF,,,,,,,,,,,Position - maybe later,, +6,QUAL,QUAL,Variant Quality,Y,302.6,sample_variant,VCF,VCFv4.2,phred-scaled quality score for the assertion made in ALT (multi-sample),number,,N,5,VCF,,,,,,,,,,,Quality,, +7,CALL_INFO,CALL_INFO,Sample ID,Y,"0/1:33,14:47:99:310,0,927",sample_variant,VCF,VCFv4.2,Calling info,string,,N,5,VCF,,,,,,,,,,,,, +8,GT,GT,Genotype,Y,"0/1,0/2,1/2",sample_variant,VCF,VCFv4.2,Genotype,string,,N,4,VCF,,,,,,,,,,,,, +9,AD,AD,Allelic Depth,Y,"33,14",sample_variant,VCF,VCFv4.2,Allelic depth,string,,N,5,VCF,,,,,,,,,,,,, +10,AD_REF,AD_REF,AD (Ref),Y,33,sample_variant,VCF,VCFv4.2,Reference allelic depth,integer,,N,5,manual / calculated?,,,,,,,,Y,,,,, +11,AD_ALT,AD_ALT,AD (Alt),Y,14,sample_variant,VCF,VCFv4.2,Alternate allelic depth,integer,,N,5,manual / calculated?,,,,,,,,Y,,,,AD, +12,DP,DP,Coverage,Y,47,sample_variant,VCF,VCFv4.2,Approximate read depth,integer,,N,4,VCF,,,0,,,,,,,,,, +13,GQ,GQ,Genotype Quality,Y,99,sample_variant,VCF,VCFv4.2,"phred-scaled quality score that the genotype is accurate [min(99,PL(max)-PL(second))]",integer,,N,4,VCF,,,,,,,,,,,Quality,, +14,PL,PL,"Genotype Likelihoods (0/0,0/1,1/1)",Y,"310,200,100",sample_variant,VCF,VCFv4.2,"Phred-scaled likelihoods for genotype (Ref/Ref, Ref/Alt, Alt/Alt)",string,,N,,VCF,,,,,,,,,,,Quality,, +15,PGT,PGT,Phasing information,Y,0|1,sample_variant,VCF,VCFv4.2,Physical phasing haplotype information,string,,N,,VCF,,,,,,,,,,,,, +16,PID,PID,Phasing ID,Y,985446_G_T,sample_variant,VCF,VCFv4.2,Physical phasing ID information,string,,N,,VCF,,,,,,,,,,,,, +17,PS,PS,Phasing Set,Y,985446,sample_variant,VCF,VCFv4.2,Phasing set ID,integer,,N,,VCF,,,,,,,,,,,,, +18,AF,AF,VAF,Y,0.2979,sample_variant,VCF,VCFv4.2,Variant allele fraction,number,,N,4,VCF,,,0,1,,,,Y,,,,, +19,FS,FS,Strand Fisher Score,Y,,sample_variant,VCF,VCFv4.2,Fisher strand score,number,,N,4,VCF,,,,,,,,,,,Quality,, +20,novoPP,novoPP,novoCaller PP,Y,1.0;0.9999999999999998,sample_variant,VCF,VCFv4.2,Posterior probability of de novo mutation,number,,N,4,novocaller,,,0,1,,,,,,,DeNovo,novoPP, +21,samplegeno_numgt,samplegeno_numgt,Sample Genotype (Numeric),Y,0/1,sample_variant,SAMPLEGENO,v0.4,Sample genotype (number format),string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage,, +22,samplegeno_gt,samplegeno_gt,Sample Genotype (Nucleotide),Y,G/T,sample_variant,SAMPLEGENO,v0.4,Sample genotype (nucletide format),string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage,, +23,samplegeno_ad,samplegeno_ad,Sample Genotype (Allele Depth),Y,21/10,sample_variant,SAMPLEGENO,v0.4,Allelic depth,string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage (Relation and Call are coming soon),, +24,samplegeno_sampleid,samplegeno_sampleid,Sample Genotype (Sample ID),Y,,sample_variant,SAMPLEGENO,v0.4,Sample ID,string,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,5,manual,,,,,,,,,,,Coverage,, +,samplegeno_ac,samplegeno_ac,Sample Genotype (Alt Allele Count Per Gene),Y,,sample_variant,SAMPLEGENO,v0.4,Alt allele count per gene,integer,"{""key"": ""samplegeno"", ""title"": ""Sample Genotype""}",N,Genotype,,,,,,,,,,,,,, +25,hgvsg,hgvsg,Variant,Y,NC_000001.11:g.1014228G>A,variant,hgvsg_creator.py,v1,HGVS genome sequence name,string,,N,3,manual,,,,,,,,,,,Position,, +26,variantClass,variantClass,Variant Type,Y,,variant,VCF,VCFv4.2,"Variant type (SNV, INS, DEL)",string,,N,3,manual,,,,,"SNV,INS,DEL,MNV",,,,,,,, +27,hg19_chr,hg19_chr,Chromosome (hg19),Y,1,variant,pyliftover,v0.4,hg19 coordinate chromosome,string,,N,3,manual,,,,,,,,,,,Position,, +28,hg19_pos,hg19_pos,Position (hg19),Y,69511,variant,pyliftover,v0.4,hg19 coordinate position,integer,,N,3,manual,,,,,,,,,,,Position - maybe later,, +29,csq_consequence,csq_consequence,,Y,intron_variant&non_coding_transcript_variant,variant,VEP,v101,Consequence type,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,5,vep,,,,,,VariantConsequence,,,,,,, +30,csq_consequence.var_conseq_id,csq_consequence.var_conseq_id,,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,,, +31,csq_consequence.definition,csq_consequence.definition,,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,,, +32,csq_consequence.impact,csq_consequence.impact,Impact (Trancript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,,, +33,csq_consequence.location,csq_consequence.location,Location (Transcript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP - used to build location,, +34,csq_consequence.coding_effect,csq_consequence.coding_effect,Coding Effect (Transcript),Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP,, +35,csq_consequence.var_conseq_name,csq_consequence.var_conseq_name,Consequence Name,Y,,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,,,,,,,,Y,,,,,, +36,csq_gene,csq_gene,,Y,ENSG00000223972,variant,VEP,v101,,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,Gene,,,,,,, +37,csq_gene.gene_symbol,csq_gene.gene_symbol,Gene,Y,,variant,VEP,v101,Stable ID of affected gene,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,VEP,, +38,csq_gene.ensgid,csq_gene.ensgid,Gene (Ensembl),Y,,variant,VEP,v101,Enseml ID of affected gene,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,calculated,,,,,,,Y,,,,,, +39,csq_feature,csq_feature,Transcript (Ensembl),Y,ENST00000450305,variant,VEP,v101,Stable ID of feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,http://useast.ensembl.org/Homo_sapiens/Transcript/Summary?db=core;t=,,VEP - maybe later,, +40,csq_mane,csq_mane,Transcript,Y,NM_015658.4,variant,VEP,v101,Stable ID of feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,manual,,,,,,,,,,,VEP,, +41,csq_biotype,csq_biotype,Biotype,Y,transcribed_unprocessed_pseudogene,variant,VEP,v101,Biotype of transcript or regulatory feature,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +42,csq_exon,csq_exon,Exon,Y,6/6,variant,VEP,v101,Exon number(s) / total,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used to build location,, +43,csq_intron,csq_intron,Intron,Y,10/10,variant,VEP,v101,Intron number(s) / total,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used to build location,, +44,csq_hgvsc,csq_hgvsc,HGVS-coding,Y,ENST00000450305.2:n.575T>A,variant,VEP,v101,HGVS coding sequence name,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP,, +45,csq_hgvsp,csq_hgvsp,HGVS-protein,Y,ENSP00000334393.3:p.Ser60%3D,variant,VEP,v101,HGVS protein sequence name,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP,, +46,csq_cdna_position,csq_cdna_position,cDNA position,Y,575,variant,VEP,v101,Relative position of base pair in cDNA sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +47,csq_cds_position,csq_cds_position,CDS position,Y,180,variant,VEP,v101,Relative position of base pair in coding sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +48,csq_protein_position,csq_protein_position,AA position,Y,60,variant,VEP,v101,Relative position of amino acid in protein,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +49,csq_amino_acids,csq_amino_acids,AA change,Y,S,variant,VEP,v101,Reference and variant amino acids,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - maybe later,, +50,csq_codons,csq_codons,codon change,Y,tcA/tcG,variant,VEP,v101,Reference and variant codon sequence,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - maybe later,, +51,csq_distance,csq_distance,distance to transcript,Y,1863,variant,VEP,v101,Shortest distance from variant to transcript,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +52,csq_strand,csq_strand,Strand,Y,1,variant,VEP,v101,Strand of the feature,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +53,csq_canonical,csq_canonical,Canonical Transcript (Boolean),Y,YES,variant,VEP,v101,Indicates if transcript is canonical for this gene,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,VEP - used in title if True,, +54,csq_most_severe,csq_most_severe,Most Severe Transcript (Boolean),Y,1,variant,VEP,v101,Indicates if transcript is most severe for this gene,boolean,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +55,csq_tsl,csq_tsl,Transcript support level,N,.&NA,variant,VEP,v101,Transcript support level,integer,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,Maybe a bug (multiple values associated with a transcript),,, +56,csq_ccds,csq_ccds,CCDS ID,Y,CCDS30547.1,variant,VEP,v101,Consensus coding sequence (CCDS) database ID,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.ncbi.nlm.nih.gov/CCDS/CcdsBrowse.cgi?REQUEST=CCDS&DATA=,,,, +57,csq_ensp,csq_ensp,Protein ID (Ensembl),Y,ENSP00000493376,variant,VEP,v101,Protein identifer,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,http://useast.ensembl.org/Homo_sapiens/Transcript/ProteinSummary?p=,,,, +58,csq_swissprot,csq_swissprot,Protein ID (UniProtKB/Swiss-Prot),Y,P0DMR1&B7ZW38,variant,VEP,v101,UniProtKB/Swiss-Prot accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.uniprot.org/uniprot/,,,, +59,csq_trembl,csq_trembl,Protein ID (UniProtKB/TrEMBL),Y,A0A2R8Y7R4&M4WDD3,variant,VEP,v101,UniProtKB/TrEMBL accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,https://www.uniprot.org/uniprot/,,,, +60,csq_uniparc,csq_uniparc,Protein ID (UniParc),Y,UPI000D1938F0,variant,VEP,v101,UniParc accession,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +63,csq_domains,csq_domains,,Y,Prints:PR00237&Gene3D:1.20.1070.10&Pfam:PF13853&PROSITE_profiles:PS50262&Superfamily:SSF81321&Transmembrane_helices:TMhelix&CDD:cd15226&Low_complexity_(Seg):seg,variant,VEP,v101,The source and identifer of any overlapping protein domains,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,,vep,,,,,,,,,,links to several dbs. Figure out how to link them. (missing in examples so far.),,, +64,csq_hgvs_offset,csq_hgvs_offset,,Y,5,variant,VEP,v101,"Indicates by how many bases the HGVS notations for this variant have been shifted, for indels",string,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +65,csq_pubmed,csq_pubmed,,Y,21159730&21492446&23664118&19096721,variant,VEP,v101,Pubmed ID(s) of publications that cite existing variant,string,"{""key"": ""transcript"", ""title"": ""Transcript""}",Y,,vep,,,,,,,,,,link needed (missing in examples so far),,, +66,csq_maxentscan_alt,csq_maxentscan_alt,MaxEntScan - Alt,Y,9.444,variant,MaxEnt,v20040421,MaxEntScan alternate sequence score,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,Splicing,, +67,csq_maxentscan_diff,csq_maxentscan_diff,MaxEntScan,Y,-0.274,variant,MaxEnt,v20040421,MaxEntScan score difference,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,copy to worst effect transcript gene also for filtering,,, +68,csq_maxentscan_ref,csq_maxentscan_ref,MaxEntScan - Ref,Y,9.171,variant,MaxEnt,v20040421,MaxEntScan reference sequence score,number,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +69,csq_tssdistance,csq_tssdistance,,Y,1863,variant,VEP,v101,Distance from the transcription start site,integer,"{""key"": ""transcript"", ""title"": ""Transcript""}",N,,vep,,,,,,,,,,,,, +70,genes_most_severe_gene,genes_most_severe_gene,Gene,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,Gene,,,,,,, +71,genes_most_severe_gene.s_het,genes_most_severe_gene.s_het,S_het,Y,0.712744609;0.687495742;0.660254755;0.639410094;0.620360495;0.616952455;0.615396766;0.608889049;0.598649548;0.586267656;0.583941063;0.573090113;0.552121239;0.547772441;0.547290214;0.547052978;0.542223592;0.541479417;0.536996463,variant,CassaNatGenet2017,04/03/2017,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,3,genes,,,,,,,Y,,,,,, +72,genes_most_severe_gene.oe_mis,genes_most_severe_gene.oe_mis,o/e (missense),Y,,variant,gnomADmetrics,v2.1.1,Observed/Expected Missense,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,,, +73,genes_most_severe_gene.oe_lof,genes_most_severe_gene.oe_lof,o/e (LoF),Y,,variant,gnomADmetrics,v2.1.1,Observed/Expected Loss of function,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,,, +74,genes_most_severe_gene.oe_lof_upper,genes_most_severe_gene.oe_lof_upper,LOEUF,Y,,variant,gnomADmetrics,v2.1.1,"loss-of-function observed/expected upper bound fraction, is a metric that is developed by the gnomAD team and supersedes pLI. See gnomAD FAQs (https://gnomad.broadinstitute.org/faq) for more information.",number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,genes,,,,,,,Y,,,,,, +75,genes_most_severe_transcript,genes_most_severe_transcript,Transcript,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,,, +76,genes_most_severe_feature_ncbi,genes_most_severe_feature_ncbi,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,,,,,,,,,,,,,,, +77,genes_most_severe_hgvsc,genes_most_severe_hgvsc,Coding Sequence,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,,, +78,genes_most_severe_hgvsp,genes_most_severe_hgvsp,Protein Sequence,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,,, +79,genes_most_severe_amino_acids,genes_most_severe_amino_acids,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,,,,,,,,,,,,,,, +80,genes_most_severe_sift_score,genes_most_severe_sift_score,SIFT score,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Missense,, +81,genes_most_severe_polyphen_score,genes_most_severe_polyphen_score,PolyPhen score,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Missense,, +82,genes_most_severe_maxentscan_diff,genes_most_severe_maxentscan_diff,MaxEntScan Diff,Y,,variant,GENES,v101,,number,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,,,,,,Splicing,, +83,genes_most_severe_consequence,genes_most_severe_consequence,,Y,,variant,GENES,v101,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,manual - VEP,,,,,,VariantConsequence,,,,,,, +84,genes_most_severe_consequence.display_title,genes_most_severe_consequence.display_title,Consequence,Y,,variant,,,,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, +85,genes_most_severe_consequence.impact,genes_most_severe_consequence.impact,Impact,Y,,variant,,,Impact on worst effect transcript,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, +86,genes_most_severe_consequence.location,genes_most_severe_consequence.location,Location,Y,,variant,,,Location on worst effect transcript ,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, +87,genes_most_severe_consequence.coding_effect,genes_most_severe_consequence.coding_effect,Coding Effect,Y,,variant,,,Coding effect on worst effect transcript,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, +88,genes_most_severe_gene.gene_lists.display_title,genes_ensg.gene_lists.display_title,Gene List,Y,,variant,,,Gene lists,string,"{""key"": ""genes"", ""title"": ""Gene""}",Y,0,calculated_property,,,,,,,Y,,,,,, +89,genes_most_severe_gene.gene_lists.project.@id,genes_ensg.gene_lists.project.@id,Gene List Project,Y,,variant,,,Gene list project ID,string,"{""key"": ""genes"", ""title"": ""Gene""}",Y,0,calculated_property,,,,,,,Y,,,,,, +90,csq_phastcons100way_vertebrate,csq_phastcons100verts,PhastCons (100 Vertebrates),Y,0,variant,UCSC - VEP,hg38,PhastCons 100 way score,number,,N,,,,,,,,,,,,,,, +91,csq_phylop100way_vertebrate,csq_phylop100verts,PhyloP (100 Vertebrates),Y,-0.684,variant,UCSC - VEP,hg38,PhyloP 100 way score,number,,N,3,phyloP,,,-20,10,,,,,,,Conservation,PhyloP100, +,csq_phylop100way_vertebrate_rankscore,csq_phylop100way_vertebrate_rankscore,PhyloP (100 Vertebrates) rankscore,Y,10.40694444,variant,dbNSFP,v4.1a,PhyloP 100 way rankscore,number,,N,,,,,,,,,,,,,,, +92,csq_phylop30way_mammalian,csq_phylop30mams,PhyloP (30 Mammals),Y,-0.327,variant,UCSC - VEP,hg38,PhyloP 30 way score,number,,N,,,,,,,,,,,,,,, +93,csq_gerp_rs,csq_gerp++_rs,Gerp++ score,Y,1.15,variant,dbNSFP,v4.1a,GERP score,number,,N,,,,,,,,,,,,,Conservation,, +,csq_gerp_rs_rankscore,csq_gerp++_rs_rankscore,Gerp++ rankscore,Y,20.66458333,variant,dbNSFP,v4.1a,GERP rankscore,number,,N,,,,,,,,,,,,,,, +94,csq_siphy_29way_logodds,csq_siphy_29way_logodds,SiPhy (Omega),Y,4.1978,variant,dbNSFP,v4.1a,Siphy omega score,number,,N,,,,,,,,,,,,,,, +95,csq_siphy_29way_pi,csq_siphy_29way_pi,SiPhy (p-value),Y,0.1516:0.0:0.6258:0.2226,variant,dbNSFP,v4.1a,Siphy p score,number,,N,,,,,,,,,,,,,,, +96,csq_primateai_score,csq_primateai_score,PrimateAI score,Y,0.6325855851,variant,dbNSFP,v4.1a,PrimateAI score,number,,N,,,,,,,,,,,,,,, +,csq_primateai_pred,csq_primateai_pred,PrimateAI prediction,Y,T,variant,dbNSFP,v4.1a,PrimateAI prediction,string,,N,,,,,,,,,,,,,,, +,csq_primateai_rankscore,csq_primateai_rankscore,PrimateAI rankscore,Y,11.98333333,variant,dbNSFP,v4.1a,PrimateAI rankscore,number,,N,,,,,,,,,,,,,,, +97,csq_cadd_phred,csq_cadd_phred,CADD Phred score,Y,2.209,variant,CADD,v1.6,CADD Phred score,number,,N,3,CADD,,,,,,,,,,,,, +,csq_cadd_raw_rankscore,csq_cadd_raw_rankscore,CADD rankscore,Y,48.46666667,variant,dbNSFP,v4.1a,CADD rankscore,number,,N,,,,,,,,,,,,,,, +,csq_polyphen2_hvar_pred,csq_polyphen2_hvar_pred,PolyPhen 2 prediction,Y,D,variant,dbNSFP,v4.1a,PolyPhen 2 prediction,string,,N,,,,,,,,,,,,,,, +,csq_polyphen2_hvar_rankscore,csq_polyphen2_hvar_rankscore,PolyPhen 2 rankscore,Y,52.85625,variant,dbNSFP,v4.1a,PolyPhen 2 rankscore,number,,N,,,,,,,,,,,,,,, +,csq_polyphen2_hvar_score,csq_polyphen2_hvar_score,PolyPhen 2 score,Y,0.9,variant,dbNSFP,v4.1a,PolyPhen 2 score,number,,N,,,,,,,,,,,,,,, +,csq_sift_pred,csq_sift_pred,SIFT prediction,Y,D,variant,dbNSFP,v4.1a,SIFT prediction,string,,N,,,,,,,,,,,,,,, +,csq_sift_converted_rankscore,csq_sift_converted_rankscore,SIFT rankscore,Y,36.925,variant,dbNSFP,v4.1a,SIFT rankscore,number,,N,,,,,,,,,,,,,,, +,csq_sift_score,csq_sift_score,SIFT score,Y,0.012,variant,dbNSFP,v4.1a,SIFT score,number,,N,,,,,,,,,,,,,,, +,csq_revel_rankscore,csq_revel_rankscore,REVEL rankscore,Y,0.15359,variant,dbNSFP,v4.1a,REVEL rankscore,number,,N,,,,,,,,,,,,,,, +,csq_revel_score,csq_revel_score,REVEL score,Y,0.053,variant,dbNSFP,v4.1a,REVEL score,number,,N,,,,,,,,,,,,,,, +98,csq_spliceai_pred_symbol,csq_spliceai_pred_symbol,SpliceAI Gene,Y,OR4F5,variant,SpliceAI,v1.3,affected gene symbol,string,,N,,,,,,,,,,,,,Splicing,, +99,csq_spliceai_pred_ds_ag,csq_spliceai_pred_ds_ag,SpliceAI Delta Score Acceptor Gain,Y,0.01,variant,SpliceAI,v1.3,delta scores (DS) for acceptor gain (AG),number,,N,,,,,0,1,,,,,,,Splicing ?,, +100,csq_spliceai_pred_ds_al,csq_spliceai_pred_ds_al,SpliceAI Delta Score Acceptor Loss,Y,0.08,variant,SpliceAI,v1.3,delta scores (DS) for acceptor loss (AL),number,,N,,,,,0,1,,,,,,,Splicing ?,, +101,csq_spliceai_pred_ds_dg,csq_spliceai_pred_ds_dg,SpliceAI Delta Score Donor Gain,Y,0,variant,SpliceAI,v1.3,delta scores (DS) for donor gain (DG),number,,N,,,,,0,1,,,,,,,Splicing ?,, +102,csq_spliceai_pred_ds_dl,csq_spliceai_pred_ds_dl,SpliceAI Delta Score Donor Loss,Y,0,variant,SpliceAI,v1.3,delta scores (DS) for donor loss (DL),number,,N,,,,,0,1,,,,,,,Splicing ?,, +103,csq_spliceai_pred_dp_ag,csq_spliceai_pred_dp_ag,SpliceAI Delta Position Acceptor Gain,Y,-10,variant,SpliceAI,v1.3,delta positions (DP) for acceptor gain (AG),integer,,N,,,,,,,,,,,,,Splicing ?,, +104,csq_spliceai_pred_dp_al,csq_spliceai_pred_dp_al,SpliceAI Delta Position Acceptor Loss,Y,26,variant,SpliceAI,v1.3,delta positions (DP) for acceptor loss (AL),integer,,N,,,,,,,,,,,,,Splicing ?,, +105,csq_spliceai_pred_dp_dg,csq_spliceai_pred_dp_dg,SpliceAI Delta Position Donor Gain,Y,-28,variant,SpliceAI,v1.3,delta positions (DP) for donor gain (DG),integer,,N,,,,,,,,,,,,,Splicing ?,, +106,csq_spliceai_pred_dp_dl,csq_spliceai_pred_dp_dl,SpliceAI Delta Position Donor Loss,Y,-25,variant,SpliceAI,v1.3,delta positions (DP) for donor loss (DL),integer,,N,,,,,,,,,,,,,Splicing ?,, +107,spliceaiMaxds,spliceaiMaxds,SpliceAI Max Delta,Y,0.8,variant,,,maximum delta scores,number,,N,4,spliceAI,,0,,,,,,,,,Splicing,, +108,csq_gnomadg_ac,csq_gnomadg_ac,GnomAD Alt Allele Count,Y,10088,variant,gnomAD,v3.1,Alternate allele count for samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +109,csq_gnomadg_af_popmax,csq_gnomadg_af_popmax,GnomAD Alt AF - PopMax,Y,0.636029,variant,gnomAD,v3.1,maximum population allele frequency from gnomAD gnome v3.0,number,,N,4,manual / gnomad,,,0,1,,,,,,,,PopMax AF,Y +110,csq_gnomadg_ac-afr,csq_gnomadg_ac-afr,GnomAD Alt AC - African-American/African,Y,2444,variant,gnomAD,v3.1,Alternate allele count for samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +111,csq_gnomadg_ac-ami,csq_gnomadg_ac-ami,GnomAD Alt AC - Amish,Y,41,variant,gnomAD,v3.1,Alternate allele count for samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +112,csq_gnomadg_ac-amr,csq_gnomadg_ac-amr,GnomAD Alt AC - Latino,Y,926,variant,gnomAD,v3.1,Alternate allele count for samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +113,csq_gnomadg_ac-asj,csq_gnomadg_ac-asj,GnomAD Alt AC - Ashkenazi Jewish,Y,310,variant,gnomAD,v3.1,Alternate allele count for samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +114,csq_gnomadg_ac-eas,csq_gnomadg_ac-eas,GnomAD Alt AC - East Asian,Y,242,variant,gnomAD,v3.1,Alternate allele count for samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +115,csq_gnomadg_ac-fin,csq_gnomadg_ac-fin,GnomAD Alt AC - Finnish,Y,294,variant,gnomAD,v3.1,Alternate allele count for samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +116,csq_gnomadg_ac-nfe,csq_gnomadg_ac-nfe,GnomAD Alt AC - Non-Finnish European,Y,5363,variant,gnomAD,v3.1,Alternate allele count for samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +117,csq_gnomadg_ac-sas,csq_gnomadg_ac-sas,GnomAD Alt AC - South Asian,Y,282,variant,gnomAD,v3.1,Alternate allele count for samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +118,csq_gnomadg_ac-oth,csq_gnomadg_ac-oth,GnomAD Alt AC - Other Ancestry,Y,174,variant,gnomAD,v3.1,Alternate allele count for samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +,csq_gnomadg_ac-mid,csq_gnomadg_ac-mid,GnomAD Alt AC - Middle Eastern,Y,174,variant,gnomAD,v3.1,Alternate allele count for samples of Other ancestry,integer,,N,,,,,,,,,,,,,,,Y +119,csq_gnomadg_ac-xy,csq_gnomadg_ac-xy,GnomAD Alt AC - male,Y,4702,variant,gnomAD,v3.1,Alternate allele count for male samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +120,csq_gnomadg_ac-xx,csq_gnomadg_ac-xx,GnomAD Alt AC - female,Y,5386,variant,gnomAD,v3.1,Alternate allele count for female samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +121,csq_gnomadg_an-afr,csq_gnomadg_an-afr,GnomAD Total AN - African-American/African,Y,3902,variant,gnomAD,v3.1,Total number of alleles in samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +122,csq_gnomadg_an-ami,csq_gnomadg_an-ami,GnomAD Total AN - Amish,Y,70,variant,gnomAD,v3.1,Total number of alleles in samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +123,csq_gnomadg_an,csq_gnomadg_an,GnomAD Total Allele Number,Y,16086,variant,gnomAD,v3.1,Total number of alleles in samples,integer,,N,4,gnomad,,,0,,,,,,,,GnomAD,,Y +124,csq_gnomadg_an-amr,csq_gnomadg_an-amr,GnomAD Total AN - Latino,Y,1460,variant,gnomAD,v3.1,Total number of alleles in samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +125,csq_gnomadg_an-asj,csq_gnomadg_an-asj,GnomAD Total AN - Ashkenazi Jewish,Y,474,variant,gnomAD,v3.1,Total number of alleles in samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +126,csq_gnomadg_an-eas,csq_gnomadg_an-eas,GnomAD Total AN - East Asian,Y,428,variant,gnomAD,v3.1,Total number of alleles in samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +127,csq_gnomadg_an-fin,csq_gnomadg_an-fin,GnomAD Total AN - Finnish,Y,560,variant,gnomAD,v3.1,Total number of alleles in samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +128,csq_gnomadg_an-nfe,csq_gnomadg_an-nfe,GnomAD Total AN - Non-Finnish European,Y,8432,variant,gnomAD,v3.1,Total number of alleles in samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +129,csq_gnomadg_an-sas,csq_gnomadg_an-sas,GnomAD Total AN - South Asian,Y,446,variant,gnomAD,v3.1,Total number of alleles in samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +130,csq_gnomadg_an-oth,csq_gnomadg_an-oth,GnomAD Total AN - Other Ancestry,Y,282,variant,gnomAD,v3.1,Total number of alleles in samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +,csq_gnomadg_an-mid,csq_gnomadg_an-mid,GnomAD Total AN - Middle Eastern,Y,282,variant,gnomAD,v3.1,Total number of alleles in samples of Other ancestry,integer,,N,,,,,,,,,,,,,,,Y +131,csq_gnomadg_an-xy,csq_gnomadg_an-xy,GnomAD Total AN - male,Y,7514,variant,gnomAD,v3.1,Total number of alleles in male samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +132,csq_gnomadg_an-xx,csq_gnomadg_an-xx,GnomAD Total AN - female,Y,8572,variant,gnomAD,v3.1,Total number of alleles in female samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +133,csq_gnomadg_af-afr,csq_gnomadg_af-afr,GnomAD Alt AF - African-American/African,Y,0.626345,variant,gnomAD,v3.1,Alternate allele frequency in samples of African-American/African ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +134,csq_gnomadg_af-ami,csq_gnomadg_af-ami,GnomAD Alt AF - Amish,Y,0.585714,variant,gnomAD,v3.1,Alternate allele frequency in samples of Amish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +135,csq_gnomadg_af-amr,csq_gnomadg_af-amr,GnomAD Alt AF - Latino,Y,0.634247,variant,gnomAD,v3.1,Alternate allele frequency in samples of Latino ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +136,csq_gnomadg_af,csq_gnomadg_af,GnomAD Alt Allele Frequency,Y,0.627129,variant,gnomAD,v3.1,Alternate allele frequency in samples,number,,N,4,gnomad,,,0,1,,,,,,,GnomAD,,Y +137,csq_gnomadg_af-asj,csq_gnomadg_af-asj,GnomAD Alt AF - Ashkenazi Jewish,Y,0.654008,variant,gnomAD,v3.1,Alternate allele frequency in samples of Ashkenazi Jewish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,AF,Y +138,csq_gnomadg_af-eas,csq_gnomadg_af-eas,GnomAD Alt AF - East Asian,Y,0.565421,variant,gnomAD,v3.1,Alternate allele frequency in samples of East Asian ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +139,csq_gnomadg_af-fin,csq_gnomadg_af-fin,GnomAD Alt AF - Finnish,Y,0.525,variant,gnomAD,v3.1,Alternate allele frequency in samples of Finnish ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +140,csq_gnomadg_af-nfe,csq_gnomadg_af-nfe,GnomAD Alt AF - Non-Finnish European,Y,0.636029,variant,gnomAD,v3.1,Alternate allele frequency in samples of Non-Finnish European ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +141,csq_gnomadg_af-sas,csq_gnomadg_af-sas,GnomAD Alt AF - South Asian,Y,0.632287,variant,gnomAD,v3.1,Alternate allele frequency in samples of South Asian ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +142,csq_gnomadg_af-oth,csq_gnomadg_af-oth,GnomAD Alt AF - Other Ancestry,Y,0.617021,variant,gnomAD,v3.1,Alternate allele frequency in samples of Other ancestry,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +,csq_gnomadg_af-mid,csq_gnomadg_af-mid,GnomAD Alt AF - Middle Eastern,Y,0.617021,variant,gnomAD,v3.1,Alternate allele frequency in samples of Other ancestry,number,,N,,,,,,,,,,,,,,,Y +143,csq_gnomadg_af-xy,csq_gnomadg_af-xy,GnomAD Alt AF - male,Y,0.625765,variant,gnomAD,v3.1,Alternate allele frequency in male samples,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +144,csq_gnomadg_af-xx,csq_gnomadg_af-xx,GnomAD Alt AF - female,Y,0.628325,variant,gnomAD,v3.1,Alternate allele frequency in female samples,number,,N,,,,,0,1,,,,,,,GnomAD,,Y +145,csq_gnomadg_nhomalt-afr,csq_gnomadg_nhomalt-afr,GnomAD Homozygous Count - African-American/African,Y,629,variant,gnomAD,v3.1,Count of homozygous individuals in samples of African-American/African ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +146,csq_gnomadg_nhomalt-ami,csq_gnomadg_nhomalt-ami,GnomAD Homozygous Count - Amish,Y,10,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Amish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +147,csq_gnomadg_nhomalt-amr,csq_gnomadg_nhomalt-amr,GnomAD Homozygous Count - Latino,Y,262,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Latino ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +148,csq_gnomadg_nhomalt,csq_gnomadg_nhomalt,GnomAD Homozygous Count,Y,2613,variant,gnomAD,v3.1,Count of homozygous individuals in samples,integer,,N,4,gnomad,,,0,,,,,,,,GnomAD,,Y +149,csq_gnomadg_nhomalt-asj,csq_gnomadg_nhomalt-asj,GnomAD Homozygous Count - Ashkenazi Jewish,Y,84,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Ashkenazi Jewish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +150,csq_gnomadg_nhomalt-eas,csq_gnomadg_nhomalt-eas,GnomAD Homozygous Count - East Asian,Y,55,variant,gnomAD,v3.1,Count of homozygous individuals in samples of East Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +151,csq_gnomadg_nhomalt-fin,csq_gnomadg_nhomalt-fin,GnomAD Homozygous Count - Finnish,Y,62,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Finnish ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +152,csq_gnomadg_nhomalt-nfe,csq_gnomadg_nhomalt-nfe,GnomAD Homozygous Count - Non-Finnish European,Y,1390,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Non-Finnish European ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +153,csq_gnomadg_nhomalt-sas,csq_gnomadg_nhomalt-sas,GnomAD Homozygous Count - South Asian,Y,75,variant,gnomAD,v3.1,Count of homozygous individuals in samples of South Asian ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +154,csq_gnomadg_nhomalt-oth,csq_gnomadg_nhomalt-oth,GnomAD Homozygous Count - Other Ancestry,Y,42,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Other ancestry,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +,csq_gnomadg_nhomalt-mid,csq_gnomadg_nhomalt-mid,GnomAD Homozygous Count - Middle Eastern,Y,42,variant,gnomAD,v3.1,Count of homozygous individuals in samples of Other ancestry,integer,,N,,,,,,,,,,,,,,,Y +155,csq_gnomadg_nhomalt-xy,csq_gnomadg_nhomalt-xy,GnomAD Homozygous Count - male,Y,1223,variant,gnomAD,v3.1,Count of homozygous individuals in male samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +156,csq_gnomadg_nhomalt-xx,csq_gnomadg_nhomalt-xx,GnomAD Homozygous Count - female,Y,1390,variant,gnomAD,v3.1,Count of homozygous individuals in female samples,integer,,N,,,,,0,,,,,,,,GnomAD,,Y +157,csq_clinvar,csq_clinvar,Clinvar ID,Y,402986,variant,ClinVar,v20201101,ClinVar variantion ID,string,,N,3,clinvar,,,,,,,,,https://www.ncbi.nlm.nih.gov/clinvar/variation//,,,, +158,csq_clinvar_clndn,csq_clinvar_clndn,,Y,not_specified¬_provided,variant,ClinVar,v20201101,ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB,string,,Y,,,,,,,,,,,,,,, +159,csq_clinvar_clndnincl,csq_clinvar_clndnincl,,Y,Encephalopathy&_acute&_infection-induced&_4&_susceptibility_to,variant,ClinVar,v20201101,For included Variant : ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB,string,,N,,,,,,,,,,,,,,, +160,csq_clinvar_clndisdb,csq_clinvar_clndisdb,,Y,MedGen:CN169374&MedGen:CN517202,variant,ClinVar,v20201101,"Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN",string,,Y,,,,,,,,,,,,,,, +161,csq_clinvar_clndisdbincl,csq_clinvar_clndisdbincl,,Y,MONDO:MONDO:0013633&MedGen:C3280160&OMIM:614212,variant,ClinVar,v20201101,"For included Variant: Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN",string,,Y,,,,,,,,,,,,,,, +163,csq_clinvar_clnrevstat,csq_clinvar_clnrevstat,,Y,criteria_provided&_single_submitter,variant,ClinVar,v20201101,ClinVar review status for the Variation ID,string,,Y,,,,,,,,,,,,,,, +164,csq_clinvar_clnsig,csq_clinvar_clnsig,Clinvar,Y,Conflicting_interpretations_of_pathogenicity&_other,variant,ClinVar,v20201101,Clinical significance for this single variant,string,,N,3,clinvar,,,,,,,,,,,,, +165,csq_clinvar_clnsigconf,csq_clinvar_clnsigconf,,Y,Benign(3)&Uncertain_significance(1),variant,ClinVar,v20201101,Conflicting clinical significance for this single variant,string,,Y,,,,,,,,,,,,,,, +166,csq_clinvar_clnsigincl,csq_clinvar_clnsigincl,,Y,16318:Pathogenic/Likely_pathogenic&217371:Pathogenic,variant,ClinVar,v20201101,Clinical significance for a haplotype or genotype that includes this variant. Reported as pairs of VariationID:clinical significance.,string,,Y,,,,,,,,,,,,,,, +167,csq_clinvar_clnvc,csq_clinvar_clnvc,,Y,single_nucleotide_variant,variant,ClinVar,v20201101,Variant type,string,,N,,,,,,,,,,,,,,, +168,csq_clinvar_clnvcso,csq_clinvar_clnvcso,,Y,SO:0001483,variant,ClinVar,v20201101,Sequence Ontology id for variant type,string,,N,,,,,,,,,,,,,,, +169,csq_clinvar_geneinfo,csq_clinvar_geneinfo,,Y,TARDBP:23435&MASP2:10747,variant,ClinVar,v20201101,Gene(s) for the variant reported as gene symbol:gene id. The gene symbol and id are delimited by a colon (:) and each pair is delimited by a vertical bar (|),string,,Y,,,,,,,,,,,,,,, +170,csq_clinvar_mc,csq_clinvar_mc,,Y,SO:0001583&missense_variant,variant,ClinVar,v20201101,Sequence Ontology ID list,string,,Y,,,,,,,,,,,,,,, +171,csq_clinvar_origin,csq_clinvar_origin,,Y,1,variant,ClinVar,v20201101,Allele origin. One or more of the following values may be added: 0 - unknown; 1 - germline; 2 - somatic; 4 - inherited; 8 - paternal; 16 - maternal; 32 - de-novo; 64 - biparental; 128 - uniparental; 256 - not-tested; 512 - tested-inconclusive; 1073741824 - other,integer,,N,,,,,,,,,,,,,,, +172,comhet_phase,comhet_phase,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het,, +173,comhet_gene,comhet_gene,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het,, +174,comhet_transcript,comhet_transcript,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",Y,,,,,,,,,,,,,Comp Het,, +175,comhet_impact_gene,comhet_impact_gene,ComHet Impact,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,4,comhet,,,,,,,,,,,Comp Het,, +176,comhet_impact_transcript,comhet_impact_transcript,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het,, +177,comhet_mate_variant,comhet_mate_variant,,Y,,sample_variant,comHet,v0.1.3,,string,"{""key"": ""cmphet"", ""title"": ""Compound Het""}",N,,,,,,,,,,,,,Comp Het,, +178,csq_gnomade2_ac,csq_gnomade2_ac,GnomADv2 Exome Alt Allele Count,Y,70&1080,variant,gnomAD,v2.1.1,Alternate allele count for samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +179,csq_gnomade2_an,csq_gnomade2_an,GnomADv2 Exome Total Allele Number,Y,112538&90228,variant,gnomAD,v2.1.1,Total number of alleles in samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +180,csq_gnomade2_af,csq_gnomade2_af,GnomADv2 Exome Alt Allele Frequency,Y,6.22012e-04&1.19697e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +181,csq_gnomade2_nhomalt,csq_gnomade2_nhomalt,GnomADv2 Exome Homozygous Count,Y,8&328,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +182,csq_gnomade2_ac-oth,csq_gnomade2_ac_oth,GnomADv2 Exome Alt AC - Other Ancestry,Y,0&27,variant,gnomAD,v2.1.1,Alternate allele count for samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +183,csq_gnomade2_an-oth,csq_gnomade2_an_oth,GnomADv2 Exome Total AN - Other Ancestry,Y,3252&2610,variant,gnomAD,v2.1.1,Total number of alleles in samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +184,csq_gnomade2_af-oth,csq_gnomade2_af_oth,GnomADv2 Exome Alt AF - Other Ancestry,Y,0.00000e+00&1.03448e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Other ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +185,csq_gnomade2_nhomalt-oth,csq_gnomade2_nhomalt_oth,GnomADv2 Exome Homozygous Count - Other Ancestry,Y,0&9,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Other ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +186,csq_gnomade2_ac-sas,csq_gnomade2_ac_sas,GnomADv2 Exome Alt AC - South Asian,Y,1&27,variant,gnomAD,v2.1.1,Alternate allele count for samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +187,csq_gnomade2_an-sas,csq_gnomade2_an_sas,GnomADv2 Exome Total AN - South Asian,Y,18838&11354,variant,gnomAD,v2.1.1,Total number of alleles in samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +188,csq_gnomade2_af-sas,csq_gnomade2_af_sas,GnomADv2 Exome Alt AF - South Asian,Y,5.30842e-05&2.37802e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of South Asian ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +189,csq_gnomade2_nhomalt-sas,csq_gnomade2_nhomalt_sas,GnomADv2 Exome Homozygous Count - South Asian,Y,0&11,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of South Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +190,csq_gnomade2_ac-fin,csq_gnomade2_ac_fin,GnomADv2 Exome Alt AC - Finnish,Y,0&22,variant,gnomAD,v2.1.1,Alternate allele count for samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +191,csq_gnomade2_an-fin,csq_gnomade2_an_fin,GnomADv2 Exome Total AN - Finnish,Y,4844&2844,variant,gnomAD,v2.1.1,Total number of alleles in samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +192,csq_gnomade2_af-fin,csq_gnomade2_af_fin,GnomADv2 Exome Alt AF - Finnish,Y,0.00000e+00&7.73558e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Finnish ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +193,csq_gnomade2_nhomalt-fin,csq_gnomade2_nhomalt_fin,GnomADv2 Exome Homozygous Count - Finnish,Y,0&7,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Finnish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +194,csq_gnomade2_ac-eas,csq_gnomade2_ac_eas,GnomADv2 Exome Alt AC - East Asian,Y,0&0,variant,gnomAD,v2.1.1,Alternate allele count for samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +195,csq_gnomade2_an-eas,csq_gnomade2_an_eas,GnomADv2 Exome Total AN - East Asian,Y,6638&10934,variant,gnomAD,v2.1.1,Total number of alleles in samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +196,csq_gnomade2_af-eas,csq_gnomade2_af_eas,GnomADv2 Exome Alt AF - East Asian,Y,0.00000e+00&0.00000e+00,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of East Asian ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +197,csq_gnomade2_nhomalt-eas,csq_gnomade2_nhomalt_eas,GnomADv2 Exome Homozygous Count - East Asian,Y,0&0,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of East Asian ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +198,csq_gnomade2_ac-amr,csq_gnomade2_ac_amr,GnomADv2 Exome Alt AC - Latino,Y,12&131,variant,gnomAD,v2.1.1,Alternate allele count for samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +199,csq_gnomade2_an-amr,csq_gnomade2_an_amr,GnomADv2 Exome Total AN - Latino,Y,19308&18214,variant,gnomAD,v2.1.1,Total number of alleles in samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +200,csq_gnomade2_af-amr,csq_gnomade2_af_amr,GnomADv2 Exome Alt AF - Latino,Y,6.21504e-04&7.19227e-03,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Latino ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +201,csq_gnomade2_nhomalt-amr,csq_gnomade2_nhomalt_amr,GnomADv2 Exome Homozygous Count - Latino,Y,3&45,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Latino ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +202,csq_gnomade2_ac-afr,csq_gnomade2_ac_afr,GnomADv2 Exome Alt AC - African-American/African,Y,56&16,variant,gnomAD,v2.1.1,Alternate allele count for samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +203,csq_gnomade2_an-afr,csq_gnomade2_an_afr,GnomADv2 Exome Total AN - African-American/African,Y,9008&1548,variant,gnomAD,v2.1.1,Total number of alleles in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +204,csq_gnomade2_af-afr,csq_gnomade2_af_afr,GnomADv2 Exome Alt AF - African-American/African,Y,6.21670e-03&1.03359e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +205,csq_gnomade2_nhomalt-afr,csq_gnomade2_nhomalt_afr,GnomADv2 Exome Homozygous Count - African-American/African,Y,5&7,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of African-American/African ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +206,csq_gnomade2_ac-asj,csq_gnomade2_ac_asj,GnomADv2 Exome Alt AC - Ashkenazi Jewish,Y,0&69,variant,gnomAD,v2.1.1,Alternate allele count for samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +207,csq_gnomade2_an-asj,csq_gnomade2_an_asj,GnomADv2 Exome Total AN - Ashkenazi Jewish,Y,5302&4822,variant,gnomAD,v2.1.1,Total number of alleles in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +208,csq_gnomade2_af-asj,csq_gnomade2_af_asj,GnomADv2 Exome Alt AF - Ashkenazi Jewish,Y,0.00000e+00&1.43094e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +209,csq_gnomade2_nhomalt-asj,csq_gnomade2_nhomalt_asj,GnomADv2 Exome Homozygous Count - Ashkenazi Jewish,Y,0&24,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Ashkenazi Jewish ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +210,csq_gnomade2_ac-nfe,csq_gnomade2_ac_nfe,GnomADv2 Exome Alt AC - Non-Finnish European,Y,1&788,variant,gnomAD,v2.1.1,Alternate allele count for samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +211,csq_gnomade2_an-nfe,csq_gnomade2_an_nfe,GnomADv2 Exome Total AN - Non-Finnish European,Y,45348&37902,variant,gnomAD,v2.1.1,Total number of alleles in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +212,csq_gnomade2_af-nfe,csq_gnomade2_af_nfe,GnomADv2 Exome Alt AF - Non-Finnish European,Y,2.20517e-05&2.07905e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +213,csq_gnomade2_nhomalt-nfe,csq_gnomade2_nhomalt_nfe,GnomADv2 Exome Homozygous Count - Non-Finnish European,Y,0&225,variant,gnomAD,v2.1.1,Count of homozygous individuals in samples of Non-Finnish European ancestry in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +214,csq_gnomade2_ac-xx,csq_gnomade2_ac_female,GnomADv2 Exome Alt AC - female,Y,43&503,variant,gnomAD,v2.1.1,Alternate allele count for female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +215,csq_gnomade2_an-xx,csq_gnomade2_an_female,GnomADv2 Exome Total AN - female,Y,50300&41370,variant,gnomAD,v2.1.1,Total number of alleles in female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +216,csq_gnomade2_af-xx,csq_gnomade2_af_female,GnomADv2 Exome Alt AF - female,Y,8.54871e-04&1.21586e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in female samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +217,csq_gnomade2_nhomalt-xx,csq_gnomade2_nhomalt_female,GnomADv2 Exome Homozygous Count - female,Y,5&157,variant,gnomAD,v2.1.1,Count of homozygous individuals in female samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +218,csq_gnomade2_ac-xy,csq_gnomade2_ac_male,GnomADv2 Exome Alt AC - male,Y,27&577,variant,gnomAD,v2.1.1,Alternate allele count for male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +219,csq_gnomade2_an-xy,csq_gnomade2_an_male,GnomADv2 Exome Total AN - male,Y,62238&48858,variant,gnomAD,v2.1.1,Total number of alleles in male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +220,csq_gnomade2_af-xy,csq_gnomade2_af_male,GnomADv2 Exome Alt AF - male,Y,4.33819e-04&1.18097e-02,variant,gnomAD,v2.1.1,Alternate allele frequency in male samples in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y +221,csq_gnomade2_nhomalt-xy,csq_gnomade2_nhomalt_male,GnomADv2 Exome Homozygous Count - male,Y,3&171,variant,gnomAD,v2.1.1,Count of homozygous individuals in male samples in gnomAD v2.1.1 exome data,integer,,Y,,,,,0,,,,,,,,,,Y +222,csq_gnomade2_af_popmax,csq_gnomade2_af_popmax,GnomADv2 Exome Alt AF - PopMax,Y,6.21670e-03&2.07905e-02,variant,gnomAD,v2.1.1,maximum population allele frequency in gnomAD v2.1.1 exome data,number,,Y,,,,,0,1,,,,,,,,,Y \ No newline at end of file diff --git a/src/encoded/ingestion/table_utils.py b/src/encoded/ingestion/table_utils.py index 199447938e..ba16febd1e 100644 --- a/src/encoded/ingestion/table_utils.py +++ b/src/encoded/ingestion/table_utils.py @@ -29,7 +29,7 @@ class MappingTableHeader: not vary across . """ HEADER_ROW_INDEX = 2 INTEGER_FIELDS = ['no', 'maximum_length_of_value', 'default', 'min', 'max'] - BOOLEAN_FIELDS = ['is_list', 'calculated_property', 'embedded_field', 'do_import'] + BOOLEAN_FIELDS = ['is_list', 'calculated_property', 'embedded_field', 'do_import', 'add_no_value'] STRING_FIELDS = ['field_name', 'vcf_field', 'source_name', 'source_version', 'sub_embedding_group', 'annotation_category', 'separator', 'description', 'scope', 'schema_title', 'pattern', 'link', 'abbreviation'] diff --git a/src/encoded/schemas/annotation_field.json b/src/encoded/schemas/annotation_field.json index 66ab94d7da..84e554eae3 100644 --- a/src/encoded/schemas/annotation_field.json +++ b/src/encoded/schemas/annotation_field.json @@ -188,6 +188,11 @@ "title": "Abbreviation", "description": "A shorter name for this field, used by the UI", "type": "string" + }, + "add_no_value": { + "title": "Add No Value", + "description": "Specify 'true' to include documents with 'No value' for this field when 0 is in the search range", + "type": "boolean" } }, "facets": { diff --git a/src/encoded/schemas/variant.json b/src/encoded/schemas/variant.json index 5c6befa019..6d3571c81f 100644 --- a/src/encoded/schemas/variant.json +++ b/src/encoded/schemas/variant.json @@ -15,38 +15,6 @@ "annotation_id" ], "additionalProperties": false, - "mixinProperties": [ - { - "$ref": "mixins.json#/schema_version" - }, - { - "$ref": "mixins.json#/uuid" - }, - { - "$ref": "mixins.json#/aliases" - }, - { - "$ref": "mixins.json#/submitted" - }, - { - "$ref": "mixins.json#/modified" - }, - { - "$ref": "mixins.json#/status" - }, - { - "$ref": "mixins.json#/attribution" - }, - { - "$ref": "mixins.json#/notes" - }, - { - "$ref": "mixins.json#/interpretation" - }, - { - "$ref": "mixins.json#/static_embeds" - } - ], "title": "Variants", "description": "Schema for variants", "id": "/profiles/variant.json", @@ -398,6 +366,7 @@ "field_name": "csq_gnomade2_ac", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -416,6 +385,7 @@ "field_name": "csq_gnomade2_ac-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_afr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -434,6 +404,7 @@ "field_name": "csq_gnomade2_ac-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_amr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -452,6 +423,7 @@ "field_name": "csq_gnomade2_ac-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_asj", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -470,6 +442,7 @@ "field_name": "csq_gnomade2_ac-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_eas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -488,6 +461,7 @@ "field_name": "csq_gnomade2_ac-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_fin", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -506,6 +480,7 @@ "field_name": "csq_gnomade2_ac-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_nfe", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -524,6 +499,7 @@ "field_name": "csq_gnomade2_ac-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_oth", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -542,6 +518,7 @@ "field_name": "csq_gnomade2_ac-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_sas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -560,6 +537,7 @@ "field_name": "csq_gnomade2_ac-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_female", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -578,6 +556,7 @@ "field_name": "csq_gnomade2_ac-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_ac_male", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -596,6 +575,7 @@ "field_name": "csq_gnomade2_af", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -615,6 +595,7 @@ "field_name": "csq_gnomade2_af-afr", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_afr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -634,6 +615,7 @@ "field_name": "csq_gnomade2_af-amr", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_amr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -653,6 +635,7 @@ "field_name": "csq_gnomade2_af-asj", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_asj", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -672,6 +655,7 @@ "field_name": "csq_gnomade2_af-eas", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_eas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -691,6 +675,7 @@ "field_name": "csq_gnomade2_af-fin", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_fin", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -710,6 +695,7 @@ "field_name": "csq_gnomade2_af-nfe", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_nfe", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -729,6 +715,7 @@ "field_name": "csq_gnomade2_af-oth", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_oth", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -739,25 +726,6 @@ "max": 1 } }, - "csq_gnomade2_af_popmax": { - "title": "GnomADv2 Exome Alt AF - PopMax", - "type": "array", - "field_name": "csq_gnomade2_af_popmax", - "items": { - "title": "GnomADv2 Exome Alt AF - PopMax", - "field_name": "csq_gnomade2_af_popmax", - "type": "number", - "do_import": true, - "vcf_field": "csq_gnomade2_af_popmax", - "source_name": "gnomAD", - "source_version": "v2.1.1", - "description": "maximum population allele frequency in gnomAD v2.1.1 exome data", - "scope": "variant", - "schema_title": "GnomADv2 Exome Alt AF - PopMax", - "min": 0, - "max": 1 - } - }, "csq_gnomade2_af-sas": { "title": "GnomADv2 Exome Alt AF - South Asian", "type": "array", @@ -767,6 +735,7 @@ "field_name": "csq_gnomade2_af-sas", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_sas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -786,6 +755,7 @@ "field_name": "csq_gnomade2_af-xx", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_female", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -805,6 +775,7 @@ "field_name": "csq_gnomade2_af-xy", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_af_male", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -815,6 +786,26 @@ "max": 1 } }, + "csq_gnomade2_af_popmax": { + "title": "GnomADv2 Exome Alt AF - PopMax", + "type": "array", + "field_name": "csq_gnomade2_af_popmax", + "items": { + "title": "GnomADv2 Exome Alt AF - PopMax", + "field_name": "csq_gnomade2_af_popmax", + "type": "number", + "do_import": true, + "add_no_value": true, + "vcf_field": "csq_gnomade2_af_popmax", + "source_name": "gnomAD", + "source_version": "v2.1.1", + "description": "maximum population allele frequency in gnomAD v2.1.1 exome data", + "scope": "variant", + "schema_title": "GnomADv2 Exome Alt AF - PopMax", + "min": 0, + "max": 1 + } + }, "csq_gnomade2_an": { "title": "GnomADv2 Exome Total Allele Number", "type": "array", @@ -824,6 +815,7 @@ "field_name": "csq_gnomade2_an", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -842,6 +834,7 @@ "field_name": "csq_gnomade2_an-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_afr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -860,6 +853,7 @@ "field_name": "csq_gnomade2_an-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_amr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -878,6 +872,7 @@ "field_name": "csq_gnomade2_an-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_asj", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -896,6 +891,7 @@ "field_name": "csq_gnomade2_an-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_eas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -914,6 +910,7 @@ "field_name": "csq_gnomade2_an-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_fin", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -932,6 +929,7 @@ "field_name": "csq_gnomade2_an-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_nfe", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -950,6 +948,7 @@ "field_name": "csq_gnomade2_an-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_oth", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -968,6 +967,7 @@ "field_name": "csq_gnomade2_an-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_sas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -986,6 +986,7 @@ "field_name": "csq_gnomade2_an-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_female", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1004,6 +1005,7 @@ "field_name": "csq_gnomade2_an-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_an_male", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1022,6 +1024,7 @@ "field_name": "csq_gnomade2_nhomalt", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1040,6 +1043,7 @@ "field_name": "csq_gnomade2_nhomalt-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_afr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1058,6 +1062,7 @@ "field_name": "csq_gnomade2_nhomalt-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_amr", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1076,6 +1081,7 @@ "field_name": "csq_gnomade2_nhomalt-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_asj", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1094,6 +1100,7 @@ "field_name": "csq_gnomade2_nhomalt-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_eas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1112,6 +1119,7 @@ "field_name": "csq_gnomade2_nhomalt-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_fin", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1130,6 +1138,7 @@ "field_name": "csq_gnomade2_nhomalt-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_nfe", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1148,6 +1157,7 @@ "field_name": "csq_gnomade2_nhomalt-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_oth", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1166,6 +1176,7 @@ "field_name": "csq_gnomade2_nhomalt-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_sas", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1184,6 +1195,7 @@ "field_name": "csq_gnomade2_nhomalt-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_female", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1202,6 +1214,7 @@ "field_name": "csq_gnomade2_nhomalt-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomade2_nhomalt_male", "source_name": "gnomAD", "source_version": "v2.1.1", @@ -1216,6 +1229,7 @@ "field_name": "csq_gnomadg_ac", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac", "source_name": "gnomAD", "source_version": "v3.1", @@ -1229,6 +1243,7 @@ "field_name": "csq_gnomadg_ac-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-afr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1242,6 +1257,7 @@ "field_name": "csq_gnomadg_ac-ami", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-ami", "source_name": "gnomAD", "source_version": "v3.1", @@ -1255,6 +1271,7 @@ "field_name": "csq_gnomadg_ac-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-amr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1268,6 +1285,7 @@ "field_name": "csq_gnomadg_ac-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-asj", "source_name": "gnomAD", "source_version": "v3.1", @@ -1281,6 +1299,7 @@ "field_name": "csq_gnomadg_ac-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-eas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1294,6 +1313,7 @@ "field_name": "csq_gnomadg_ac-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-fin", "source_name": "gnomAD", "source_version": "v3.1", @@ -1307,6 +1327,7 @@ "field_name": "csq_gnomadg_ac-mid", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-mid", "source_name": "gnomAD", "source_version": "v3.1", @@ -1319,6 +1340,7 @@ "field_name": "csq_gnomadg_ac-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-nfe", "source_name": "gnomAD", "source_version": "v3.1", @@ -1332,6 +1354,7 @@ "field_name": "csq_gnomadg_ac-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-oth", "source_name": "gnomAD", "source_version": "v3.1", @@ -1345,6 +1368,7 @@ "field_name": "csq_gnomadg_ac-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-sas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1358,6 +1382,7 @@ "field_name": "csq_gnomadg_ac-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-xx", "source_name": "gnomAD", "source_version": "v3.1", @@ -1371,6 +1396,7 @@ "field_name": "csq_gnomadg_ac-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_ac-xy", "source_name": "gnomAD", "source_version": "v3.1", @@ -1384,6 +1410,7 @@ "field_name": "csq_gnomadg_af", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af", "source_name": "gnomAD", "source_version": "v3.1", @@ -1398,6 +1425,7 @@ "field_name": "csq_gnomadg_af-afr", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-afr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1412,6 +1440,7 @@ "field_name": "csq_gnomadg_af-ami", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-ami", "source_name": "gnomAD", "source_version": "v3.1", @@ -1426,6 +1455,7 @@ "field_name": "csq_gnomadg_af-amr", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-amr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1440,6 +1470,7 @@ "field_name": "csq_gnomadg_af-asj", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-asj", "source_name": "gnomAD", "source_version": "v3.1", @@ -1455,6 +1486,7 @@ "field_name": "csq_gnomadg_af-eas", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-eas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1469,6 +1501,7 @@ "field_name": "csq_gnomadg_af-fin", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-fin", "source_name": "gnomAD", "source_version": "v3.1", @@ -1483,6 +1516,7 @@ "field_name": "csq_gnomadg_af-mid", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-mid", "source_name": "gnomAD", "source_version": "v3.1", @@ -1495,6 +1529,7 @@ "field_name": "csq_gnomadg_af-nfe", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-nfe", "source_name": "gnomAD", "source_version": "v3.1", @@ -1509,6 +1544,7 @@ "field_name": "csq_gnomadg_af-oth", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-oth", "source_name": "gnomAD", "source_version": "v3.1", @@ -1523,6 +1559,7 @@ "field_name": "csq_gnomadg_af-sas", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-sas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1537,6 +1574,7 @@ "field_name": "csq_gnomadg_af-xx", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-xx", "source_name": "gnomAD", "source_version": "v3.1", @@ -1551,6 +1589,7 @@ "field_name": "csq_gnomadg_af-xy", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af-xy", "source_name": "gnomAD", "source_version": "v3.1", @@ -1565,6 +1604,7 @@ "field_name": "csq_gnomadg_af_popmax", "type": "number", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_af_popmax", "source_name": "gnomAD", "source_version": "v3.1", @@ -1580,6 +1620,7 @@ "field_name": "csq_gnomadg_an", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an", "source_name": "gnomAD", "source_version": "v3.1", @@ -1593,6 +1634,7 @@ "field_name": "csq_gnomadg_an-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-afr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1606,6 +1648,7 @@ "field_name": "csq_gnomadg_an-ami", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-ami", "source_name": "gnomAD", "source_version": "v3.1", @@ -1619,6 +1662,7 @@ "field_name": "csq_gnomadg_an-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-amr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1632,6 +1676,7 @@ "field_name": "csq_gnomadg_an-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-asj", "source_name": "gnomAD", "source_version": "v3.1", @@ -1645,6 +1690,7 @@ "field_name": "csq_gnomadg_an-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-eas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1658,6 +1704,7 @@ "field_name": "csq_gnomadg_an-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-fin", "source_name": "gnomAD", "source_version": "v3.1", @@ -1671,6 +1718,7 @@ "field_name": "csq_gnomadg_an-mid", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-mid", "source_name": "gnomAD", "source_version": "v3.1", @@ -1683,6 +1731,7 @@ "field_name": "csq_gnomadg_an-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-nfe", "source_name": "gnomAD", "source_version": "v3.1", @@ -1696,6 +1745,7 @@ "field_name": "csq_gnomadg_an-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-oth", "source_name": "gnomAD", "source_version": "v3.1", @@ -1709,6 +1759,7 @@ "field_name": "csq_gnomadg_an-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-sas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1722,6 +1773,7 @@ "field_name": "csq_gnomadg_an-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-xx", "source_name": "gnomAD", "source_version": "v3.1", @@ -1735,6 +1787,7 @@ "field_name": "csq_gnomadg_an-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_an-xy", "source_name": "gnomAD", "source_version": "v3.1", @@ -1748,6 +1801,7 @@ "field_name": "csq_gnomadg_nhomalt", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt", "source_name": "gnomAD", "source_version": "v3.1", @@ -1761,6 +1815,7 @@ "field_name": "csq_gnomadg_nhomalt-afr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-afr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1774,6 +1829,7 @@ "field_name": "csq_gnomadg_nhomalt-ami", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-ami", "source_name": "gnomAD", "source_version": "v3.1", @@ -1787,6 +1843,7 @@ "field_name": "csq_gnomadg_nhomalt-amr", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-amr", "source_name": "gnomAD", "source_version": "v3.1", @@ -1800,6 +1857,7 @@ "field_name": "csq_gnomadg_nhomalt-asj", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-asj", "source_name": "gnomAD", "source_version": "v3.1", @@ -1813,6 +1871,7 @@ "field_name": "csq_gnomadg_nhomalt-eas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-eas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1826,6 +1885,7 @@ "field_name": "csq_gnomadg_nhomalt-fin", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-fin", "source_name": "gnomAD", "source_version": "v3.1", @@ -1839,6 +1899,7 @@ "field_name": "csq_gnomadg_nhomalt-mid", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-mid", "source_name": "gnomAD", "source_version": "v3.1", @@ -1851,6 +1912,7 @@ "field_name": "csq_gnomadg_nhomalt-nfe", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-nfe", "source_name": "gnomAD", "source_version": "v3.1", @@ -1864,6 +1926,7 @@ "field_name": "csq_gnomadg_nhomalt-oth", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-oth", "source_name": "gnomAD", "source_version": "v3.1", @@ -1877,6 +1940,7 @@ "field_name": "csq_gnomadg_nhomalt-sas", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-sas", "source_name": "gnomAD", "source_version": "v3.1", @@ -1890,6 +1954,7 @@ "field_name": "csq_gnomadg_nhomalt-xx", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-xx", "source_name": "gnomAD", "source_version": "v3.1", @@ -1903,6 +1968,7 @@ "field_name": "csq_gnomadg_nhomalt-xy", "type": "integer", "do_import": true, + "add_no_value": true, "vcf_field": "csq_gnomadg_nhomalt-xy", "source_name": "gnomAD", "source_version": "v3.1", @@ -1916,7 +1982,7 @@ "field_name": "csq_phastcons100way_vertebrate", "type": "number", "do_import": true, - "vcf_field": "csq_phastcons100way_vertebrate", + "vcf_field": "csq_phastcons100verts", "source_name": "UCSC - VEP", "source_version": "hg38", "description": "PhastCons 100 way score", @@ -1928,7 +1994,7 @@ "field_name": "csq_phylop100way_vertebrate", "type": "number", "do_import": true, - "vcf_field": "csq_phylop100way_vertebrate", + "vcf_field": "csq_phylop100verts", "source_name": "UCSC - VEP", "source_version": "hg38", "description": "PhyloP 100 way score", @@ -1955,7 +2021,7 @@ "field_name": "csq_phylop30way_mammalian", "type": "number", "do_import": true, - "vcf_field": "csq_phylop30way_mammalian", + "vcf_field": "csq_phylop30mams", "source_name": "UCSC - VEP", "source_version": "hg38", "description": "PhyloP 30 way score", @@ -3089,4 +3155,4 @@ "order": 100 } } -} +} \ No newline at end of file diff --git a/src/encoded/schemas/variant_embeds.json b/src/encoded/schemas/variant_embeds.json index 969fb995db..a02404f104 100644 --- a/src/encoded/schemas/variant_embeds.json +++ b/src/encoded/schemas/variant_embeds.json @@ -1 +1 @@ -{"variant": {"embedded_field": ["transcript.csq_consequence.var_conseq_id", "transcript.csq_consequence.definition", "transcript.csq_consequence.impact", "transcript.csq_consequence.location", "transcript.csq_consequence.coding_effect", "transcript.csq_consequence.var_conseq_name", "transcript.csq_gene.gene_symbol", "transcript.csq_gene.ensgid", "genes.genes_most_severe_gene.s_het", "genes.genes_most_severe_gene.oe_mis", "genes.genes_most_severe_gene.oe_lof", "genes.genes_most_severe_gene.oe_lof_upper", "genes.genes_most_severe_consequence.display_title", "genes.genes_most_severe_consequence.impact", "genes.genes_most_severe_consequence.location", "genes.genes_most_severe_consequence.coding_effect", "genes.genes_most_severe_gene.gene_lists.display_title"]}} +{"variant": {"embedded_field": ["transcript.csq_consequence.var_conseq_id", "transcript.csq_consequence.definition", "transcript.csq_consequence.impact", "transcript.csq_consequence.location", "transcript.csq_consequence.coding_effect", "transcript.csq_consequence.var_conseq_name", "transcript.csq_gene.gene_symbol", "transcript.csq_gene.ensgid", "genes.genes_most_severe_gene.s_het", "genes.genes_most_severe_gene.oe_mis", "genes.genes_most_severe_gene.oe_lof", "genes.genes_most_severe_gene.oe_lof_upper", "genes.genes_most_severe_consequence.display_title", "genes.genes_most_severe_consequence.impact", "genes.genes_most_severe_consequence.location", "genes.genes_most_severe_consequence.coding_effect", "genes.genes_most_severe_gene.gene_lists.display_title", "genes.genes_most_severe_gene.gene_lists.project.@id"]}} diff --git a/src/encoded/schemas/variant_sample.json b/src/encoded/schemas/variant_sample.json index 9e7121a6ac..dd75dbe66e 100644 --- a/src/encoded/schemas/variant_sample.json +++ b/src/encoded/schemas/variant_sample.json @@ -14,35 +14,6 @@ "annotation_id" ], "additionalProperties": false, - "mixinProperties": [ - { - "$ref": "mixins.json#/schema_version" - }, - { - "$ref": "mixins.json#/uuid" - }, - { - "$ref": "mixins.json#/aliases" - }, - { - "$ref": "mixins.json#/submitted" - }, - { - "$ref": "mixins.json#/modified" - }, - { - "$ref": "mixins.json#/status" - }, - { - "$ref": "mixins.json#/attribution" - }, - { - "$ref": "mixins.json#/notes" - }, - { - "$ref": "mixins.json#/static_embeds" - } - ], "title": "Sample Variant", "description": "Schema for variant info for sample", "id": "/profiles/variant_sample.json", @@ -313,11 +284,23 @@ } } }, + "discovery_interpretation": { + "title": "Discovery Interpretation", + "description": "Gene/Variant Discovery interpretation note connected to this item", + "type": "string", + "linkTo": "NoteDiscovery" + }, "file": { "title": "File", "description": "String Accession of the vcf file used in digestion", "type": "string" }, + "gene_notes": { + "title": "Gene Notes", + "description": "Note item related to this Gene", + "type": "string", + "linkTo": "NoteStandard" + }, "genotype_labels": { "title": "Genotype Labels", "type": "array", @@ -345,6 +328,12 @@ "type": "string" } }, + "interpretation": { + "title": "Clinical Interpretation", + "description": "Clinical Interpretation Note connected to this item", + "type": "string", + "linkTo": "NoteInterpretation" + }, "novoPP": { "title": "novoCaller PP", "field_name": "novoPP", @@ -481,29 +470,11 @@ "type": "string", "linkTo": "Variant" }, - "gene_notes": { - "title": "Gene Notes", - "description": "Notes related to the relevant Gene", - "type": "string", - "linkTo": "NoteStandard" - }, "variant_notes": { "title": "Variant Notes", "description": "Notes related to the relevant Variant", "type": "string", "linkTo": "NoteStandard" - }, - "interpretation": { - "title": "Clinical Interpretation", - "description": "Clinical Interpretation Note connected to this item", - "type": "string", - "linkTo": "NoteInterpretation" - }, - "discovery_interpretation": { - "title": "Discovery Interpretation", - "description": "Gene/Variant Discovery interpretation note connected to this item", - "type": "string", - "linkTo": "NoteDiscovery" } }, "columns": { @@ -1529,4 +1500,4 @@ "grouping": "variant database" } } -} +} \ No newline at end of file diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 1506841b0e..94f0a5a870 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -33,6 +33,10 @@ class LuceneBuilder: be "entry-point" methods as well. """ to_from_pattern = re.compile("^(.*)[.](to|from)$") + RANGE_DIRECTIONS = ['gt', 'gte', 'lt', 'lte'] + SMALLEST_NONZERO_IEEE_32 = 1.1754e-38 # smallest epsilon > 0 + # ref: http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch04s17.html + # 1.00000000000000000000001 x 2^-127 = 1.1754e-38 @staticmethod def apply_range_filters(range_filters, must_filters, es_mapping): @@ -373,6 +377,21 @@ def extract_field_from_to(cls, query_part): return bool(match), match.group(1), match.group(2) return False, None, None + @classmethod + def range_includes_zero(cls, range_filter): + """ Returns True if the given range_filter includes the value 0. """ + for direction in cls.RANGE_DIRECTIONS: + if direction in range_filter: + if direction == 'lte' and float(range_filter[direction]) >= 0: + return True + elif direction == 'gte' and float(range_filter[direction]) <= 0: + return True + elif direction == 'lt' and float(range_filter[direction]) > 0: + return True + elif direction == 'gt' and float(range_filter[direction]) < 0: + return True + return False + @classmethod def handle_range_filters(cls, request, result, field_filters, doc_types): """ @@ -452,7 +471,7 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): if range_type == 'date': range_filters[query_field]['format'] = 'yyyy-MM-dd HH:mm' - if range_direction in ('gt', 'gte', 'lt', 'lte'): + if range_direction in cls.RANGE_DIRECTIONS: if range_type == "date" and len(term) == 10: # TODO: refactor to use regex -Will 06/24/2020 # Correct term to have hours, e.g. 00:00 or 23:59, if not otherwise supplied. if range_direction == 'gt' or range_direction == 'lte': @@ -474,7 +493,7 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): # Check if schema requests no value if 'items' in field_schema: # we are searching on an array of numerics field_schema = field_schema['items'] - if field_schema.get('add_no_value', False): + if field_schema.get('add_no_value', False) and cls.range_includes_zero(range_filters[query_field]): range_filters[query_field]['add_no_value'] = True # add these to field_filters directly, handle later with build_sub_queries @@ -908,9 +927,16 @@ def _add_stats_aggregation(cls, field, facet, field_schema, query_field, search_ FILTER: facet_filters } - @staticmethod - def _build_range_aggregation(query_field, ranges): - """ Builds a range aggregation. """ + @classmethod + def _build_range_aggregation(cls, query_field, ranges): + """ Builds a range aggregation. + Detects when 0-0 range is specified and replaces 'to' with the + smallest IEEE 32 value such that the bucket effectively only captures + the value 0. + """ + if 'from' in ranges and 'to' in ranges: + if ranges['from'] == 0 and ranges['to'] == 0: + ranges['to'] = cls.SMALLEST_NONZERO_IEEE_32 return { RANGE: { FIELD: query_field, diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 63648388c4..daec0289fd 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -845,6 +845,8 @@ def format_facets(self, es_results): # TODO - refactor ? # merge bucket labels from ranges into buckets + total_hits = es_results.get('hits', {}).get('total', 0) + bucket_hits = 0 for r in result_facet['ranges']: for b in bucket_location['buckets']: @@ -852,8 +854,20 @@ def format_facets(self, es_results): if (r.get('from', self.MISSING) == b.get('from', self.MISSING) and r.get('to', self.MISSING) == b.get('to', self.MISSING)): r['doc_count'] = b['doc_count'] + bucket_hits += b['doc_count'] break + # Normally, this difference would be zero, but when searching + # on certain range fields we wish to include documents that have + # no value - the bucket range aggregation does not return a No value + # bucket, so we must force it in and infer its counts - Will 6/21/21 + hit_difference = total_hits - bucket_hits + if hit_difference > 0: + bucket_location['buckets'].append({ + 'key': 'No value', + 'doc_count': hit_difference + }) + # process terms agg else: # do the below, except account for nested agg structure diff --git a/src/encoded/tests/test_search.py b/src/encoded/tests/test_search.py index 153eccdca2..76fd13ce42 100644 --- a/src/encoded/tests/test_search.py +++ b/src/encoded/tests/test_search.py @@ -1243,7 +1243,7 @@ def bucket_range_data_raw(): 1 object with a value for no_value_integer, to test that filtering on a field that sets 'add_no_value' to True will not filter documents with 'No value'. """ - return [{ + entries = [{ 'special_integer': i, 'special_object_that_holds_integer': { 'embedded_integer': i @@ -1258,9 +1258,11 @@ def bucket_range_data_raw(): 'embedded_integer': 9 if i < 5 else 0 }, ] - } for i in range(9)] + [{ - 'no_value_integer': 8 - }] + } for i in range(10)] + # set no value int on the last element + entries[-1]['no_value_integer'] = 8 + entries[-1]['no_value_integer_array'] = [8] + return entries @pytest.fixture(scope='session') # XXX: consider scope further - Will 11/5/2020 @@ -1298,8 +1300,9 @@ def select_facet(facets, facet_name): return result @pytest.mark.parametrize('expected_fields, expected_counts', [ - (['special_integer', 'special_object_that_holds_integer.embedded_integer'], 4), - (['array_of_objects_that_holds_integer.embedded_integer'], 9) + (['special_integer'], 5), + (['special_object_that_holds_integer.embedded_integer'], 5), + (['array_of_objects_that_holds_integer.embedded_integer'], 10) ]) def test_search_bucket_range_simple(self, workbook, es_testapp, bucket_range_data, expected_fields, expected_counts): """ Tests searching a collection of documents with varying integer field types that @@ -1316,7 +1319,7 @@ def test_search_bucket_range_nested_qualifier(self, workbook, es_testapp, bucket res = es_testapp.get('/search/?type=TestingBucketRangeFacets' '&array_of_objects_that_holds_integer.embedded_identifier=%s' % identifier).json['facets'] self.verify_facet_counts(res, ['array_of_objects_that_holds_integer.embedded_integer'], - 2, 9) + 2, 10) @pytest.mark.parametrize('identifier', [ 'reverse', 'forward' @@ -1327,7 +1330,7 @@ def test_search_bucket_range_nested_qualifier_multiple(self, workbook, es_testap '&array_of_objects_that_holds_integer.embedded_integer.from=6' '&array_of_objects_that_holds_integer.embedded_identifier=%s' % identifier).json['facets'] self.verify_facet_counts(res, ['array_of_objects_that_holds_integer.embedded_integer'], - 2, 9) + 2, 10) facet_with_labels = self.select_facet(res, 'array_of_objects_that_holds_integer.embedded_integer') for r in facet_with_labels['ranges']: assert 'label' in r @@ -1337,15 +1340,29 @@ def test_search_bucket_range_add_no_value(self, workbook, es_testapp, bucket_ran """ Tests that providing a range filter on a field that specifies 'add_no_value' does not filter documents that have no value for that field. """ - res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=5').json # should detect + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=0').json # should detect self.verify_counts(res, 10) - res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=10').json # should not detect - self.verify_counts(res, 9) + es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=10', status=404) # should not detect res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.to=10').json # should detect self.verify_counts(res, 10) - res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=4' + res = es_testapp.get('/search/?type=TestingBucketRangeFacets&no_value_integer.from=0' '&no_value_integer.to=10').json # should detect self.verify_counts(res, 10) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets' + '&no_value_integer_array.from=0').json # should detect + self.verify_counts(res, 10) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets' + '&no_value_integer_array.from=8').json # should detect + self.verify_counts(res, 1) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets' + '&no_value_integer_array.from=0&no_value_integer_array.to=7').json # should detect + self.verify_counts(res, 9) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets' + '&no_value_integer_array.from=-1&no_value_integer_array.to=7').json # should detect + self.verify_counts(res, 9) + res = es_testapp.get('/search/?type=TestingBucketRangeFacets' + '&no_value_integer_array.from=-1&no_value_integer_array.to=9').json # should detect + self.verify_counts(res, 10) def test_search_bucket_range_workbook(self, es_testapp, workbook): # TODO: write me once some bucket-range aggregations are defined on schemas for workbook inserts diff --git a/src/encoded/tests/test_variant_table_intake.py b/src/encoded/tests/test_variant_table_intake.py index c5ccfc47a1..b002f936bb 100644 --- a/src/encoded/tests/test_variant_table_intake.py +++ b/src/encoded/tests/test_variant_table_intake.py @@ -18,7 +18,7 @@ 'description', 'value_example', 'enum_list', 'do_import', 'scope', 'schema_title', 'links_to', 'embedded_field', 'calculated_property', 'pattern', 'default', 'min', 'max', 'link', 'comments', - 'annotation_space_location', 'abbreviation'] + 'annotation_space_location', 'abbreviation', 'add_no_value'] EXPECTED_INSERT = {'field_name': 'CHROM', 'vcf_field': 'CHROM', 'schema_title': 'Chromosome', 'do_import': True, 'scope': 'variant', 'source_name': 'VCF', 'source_version': 'VCFv4.2', 'description': 'Chromosome', @@ -32,10 +32,10 @@ 'transcript.vep_gene.gene_symbol', 'transcript.vep_gene.ensgid', 'transcript.vep_consequence.var_conseq_name'] VARIANT_TABLE_VERSION = 'annV0.5.4' -VARIANT_TABLE_DATE = '04.20.2021' -NUMBER_ANNOTATION_FIELDS = 236 +VARIANT_TABLE_DATE = '06.23.2021' +NUMBER_ANNOTATION_FIELDS = 237 SAMPLE_FIELDS_EXPECTED = 26 -VARIANT_FIELDS_EXPECTED = 210 +VARIANT_FIELDS_EXPECTED = 211 TRANSCRIPT_FIELDS_EXPECTED = 30 @@ -180,6 +180,9 @@ def test_generate_variant_schema(MTParser, variant_items): assert properties['csq_gnomadg_af_popmax']['min'] == 0 assert properties['csq_gnomadg_af_popmax']['max'] == 1 assert properties['csq_gnomade2_an']['items']['min'] == 0 + assert properties['csq_gnomade2_ac']['items']['add_no_value'] is True + assert properties['csq_gnomadg_af-xy']['add_no_value'] is True + assert properties['csq_gnomadg_nhomalt-amr']['add_no_value'] is True assert properties['csq_sift_pred']['type'] == 'string' # check sub-embedded object fields diff --git a/src/encoded/tests/testing_views.py b/src/encoded/tests/testing_views.py index 3c6e6b67b4..12e08c9098 100644 --- a/src/encoded/tests/testing_views.py +++ b/src/encoded/tests/testing_views.py @@ -401,6 +401,13 @@ class TestingBucketRangeFacets(Item): 'add_no_value': True # if a range query is specified on this field, include documents that # have 'No value' for the field }, + 'no_value_integer_array': { + 'type': 'array', + 'items': { + 'type': 'integer', + 'add_no_value': True + } + }, 'special_integer': { 'type': 'integer' }, @@ -429,6 +436,22 @@ class TestingBucketRangeFacets(Item): } }, 'facets': { + 'no_value_integer': { + 'title': 'No value integer', + 'aggregation_type': 'range', + 'ranges': [ + {'from': 0, 'to': 5}, + {'from': 5, 'to': 10} + ] + }, + 'no_value_integer_array': { + 'title': 'No value integer array', + 'aggregation_type': 'range', + 'ranges': [ + {'from': 0, 'to': 5}, + {'from': 5, 'to': 10} + ] + }, 'special_integer': { 'title': 'Special Integer', 'aggregation_type': 'range', From 63198d5604d21f20fa5fdf5a8ec67fa657d6a419 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 23 Jun 2021 14:59:34 -0400 Subject: [PATCH 06/28] remove old field, repair schema, repair bucket drop in --- .../annotations/v0.5.4_variant_table.csv | 1 - src/encoded/ingestion/table_utils.py | 35 +++++++++++++------ src/encoded/schemas/variant.json | 32 +++++++++++++++++ src/encoded/schemas/variant_embeds.json | 2 +- src/encoded/schemas/variant_sample.json | 29 +++++++++++++++ src/encoded/search/search.py | 2 +- .../tests/test_variant_table_intake.py | 4 +-- src/encoded/tests/testing_views.py | 1 + 8 files changed, 91 insertions(+), 15 deletions(-) diff --git a/src/encoded/annotations/v0.5.4_variant_table.csv b/src/encoded/annotations/v0.5.4_variant_table.csv index c1971c9171..2d6eda6d35 100644 --- a/src/encoded/annotations/v0.5.4_variant_table.csv +++ b/src/encoded/annotations/v0.5.4_variant_table.csv @@ -88,7 +88,6 @@ no,field_name,vcf_field,schema_title,do_import,value_example,scope,source_name,s 86,genes_most_severe_consequence.location,genes_most_severe_consequence.location,Location,Y,,variant,,,Location on worst effect transcript ,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, 87,genes_most_severe_consequence.coding_effect,genes_most_severe_consequence.coding_effect,Coding Effect,Y,,variant,,,Coding effect on worst effect transcript,string,"{""key"": ""genes"", ""title"": ""Gene""}",N,4,calculated_property,,,,,,,Y,,,,,, 88,genes_most_severe_gene.gene_lists.display_title,genes_ensg.gene_lists.display_title,Gene List,Y,,variant,,,Gene lists,string,"{""key"": ""genes"", ""title"": ""Gene""}",Y,0,calculated_property,,,,,,,Y,,,,,, -89,genes_most_severe_gene.gene_lists.project.@id,genes_ensg.gene_lists.project.@id,Gene List Project,Y,,variant,,,Gene list project ID,string,"{""key"": ""genes"", ""title"": ""Gene""}",Y,0,calculated_property,,,,,,,Y,,,,,, 90,csq_phastcons100way_vertebrate,csq_phastcons100verts,PhastCons (100 Vertebrates),Y,0,variant,UCSC - VEP,hg38,PhastCons 100 way score,number,,N,,,,,,,,,,,,,,, 91,csq_phylop100way_vertebrate,csq_phylop100verts,PhyloP (100 Vertebrates),Y,-0.684,variant,UCSC - VEP,hg38,PhyloP 100 way score,number,,N,3,phyloP,,,-20,10,,,,,,,Conservation,PhyloP100, ,csq_phylop100way_vertebrate_rankscore,csq_phylop100way_vertebrate_rankscore,PhyloP (100 Vertebrates) rankscore,Y,10.40694444,variant,dbNSFP,v4.1a,PhyloP 100 way rankscore,number,,N,,,,,,,,,,,,,,, diff --git a/src/encoded/ingestion/table_utils.py b/src/encoded/ingestion/table_utils.py index ba16febd1e..8065b892bf 100644 --- a/src/encoded/ingestion/table_utils.py +++ b/src/encoded/ingestion/table_utils.py @@ -546,11 +546,11 @@ def extend_variant_sample_columns(cols): @staticmethod def add_extra_variant_sample_facets(facs): - ''' + """ Order of a Facet Group within top-level FacetList is determined by `min(grouped facet 1, grouped facet 2, ...)` which is then used for sorting relative to all other top-level facets' and facet groups' orders. Facets within a group are sorted relative to each other. - ''' + """ facs["variant.genes.genes_most_severe_gene.display_title"] = { "title": "Gene", "order": 1, @@ -676,8 +676,6 @@ def add_extra_variant_sample_facets(facs): "grouping": "Genotype", "default_hidden": True }, - - "associated_genotype_labels.sister_genotype_label": { "title": "Sister Genotype", "order": 1001, @@ -702,8 +700,6 @@ def add_extra_variant_sample_facets(facs): "grouping": "Genotype", "default_hidden": True }, - - "associated_genotype_labels.brother_genotype_label": { "title": "Brother Genotype", "order": 1005, @@ -728,8 +724,6 @@ def add_extra_variant_sample_facets(facs): "grouping": "Genotype", "default_hidden": True }, - - "associated_genotype_labels.daughter_genotype_label": { "title": "Daughter Genotype", "order": 1009, @@ -754,8 +748,6 @@ def add_extra_variant_sample_facets(facs): "grouping": "Genotype", "default_hidden": True }, - - "associated_genotype_labels.son_genotype_label": { "title": "Son Genotype", "order": 1013, @@ -802,6 +794,17 @@ def generate_variant_sample_schema(self, sample_props, cols, facs, variant_cols, schema['title'] = 'Sample Variant' schema['description'] = "Schema for variant info for sample" schema['id'] = '/profiles/variant_sample.json' + schema['mixinProperties'] = [ + {"$ref": "mixins.json#/schema_version"}, + {"$ref": "mixins.json#/uuid"}, + {"$ref": "mixins.json#/aliases"}, + {"$ref": "mixins.json#/submitted"}, + {"$ref": "mixins.json#/modified"}, + {"$ref": "mixins.json#/status"}, + {"$ref": "mixins.json#/attribution"}, + {"$ref": "mixins.json#/notes"}, + {"$ref": "mixins.json#/static_embeds"}, + ] schema['properties'] = sample_props schema['properties']['schema_version'] = {'default': '1'} schema['properties']['variant'] = { # link to single variant @@ -929,6 +932,18 @@ def generate_variant_schema(self, var_props, cols, facs): schema['title'] = 'Variants' schema['description'] = "Schema for variants" schema['id'] = '/profiles/variant.json' + schema['mixinProperties'] = [ + {"$ref": "mixins.json#/schema_version"}, + {"$ref": "mixins.json#/uuid"}, + {"$ref": "mixins.json#/aliases"}, + {"$ref": "mixins.json#/submitted"}, + {"$ref": "mixins.json#/modified"}, + {"$ref": "mixins.json#/status"}, + {"$ref": "mixins.json#/attribution"}, + {"$ref": "mixins.json#/notes"}, + {"$ref": "mixins.json#/interpretation"}, + {"$ref": "mixins.json#/static_embeds"}, + ] schema['properties'] = var_props schema['properties']['hg19'] = { # required for testing :( - will 1-8-2021 "title": "hg19 Coordinates", diff --git a/src/encoded/schemas/variant.json b/src/encoded/schemas/variant.json index 6d3571c81f..16d540d011 100644 --- a/src/encoded/schemas/variant.json +++ b/src/encoded/schemas/variant.json @@ -18,6 +18,38 @@ "title": "Variants", "description": "Schema for variants", "id": "/profiles/variant.json", + "mixinProperties": [ + { + "$ref": "mixins.json#/schema_version" + }, + { + "$ref": "mixins.json#/uuid" + }, + { + "$ref": "mixins.json#/aliases" + }, + { + "$ref": "mixins.json#/submitted" + }, + { + "$ref": "mixins.json#/modified" + }, + { + "$ref": "mixins.json#/status" + }, + { + "$ref": "mixins.json#/attribution" + }, + { + "$ref": "mixins.json#/notes" + }, + { + "$ref": "mixins.json#/interpretation" + }, + { + "$ref": "mixins.json#/static_embeds" + } + ], "properties": { "ALT": { "title": "Alt", diff --git a/src/encoded/schemas/variant_embeds.json b/src/encoded/schemas/variant_embeds.json index a02404f104..969fb995db 100644 --- a/src/encoded/schemas/variant_embeds.json +++ b/src/encoded/schemas/variant_embeds.json @@ -1 +1 @@ -{"variant": {"embedded_field": ["transcript.csq_consequence.var_conseq_id", "transcript.csq_consequence.definition", "transcript.csq_consequence.impact", "transcript.csq_consequence.location", "transcript.csq_consequence.coding_effect", "transcript.csq_consequence.var_conseq_name", "transcript.csq_gene.gene_symbol", "transcript.csq_gene.ensgid", "genes.genes_most_severe_gene.s_het", "genes.genes_most_severe_gene.oe_mis", "genes.genes_most_severe_gene.oe_lof", "genes.genes_most_severe_gene.oe_lof_upper", "genes.genes_most_severe_consequence.display_title", "genes.genes_most_severe_consequence.impact", "genes.genes_most_severe_consequence.location", "genes.genes_most_severe_consequence.coding_effect", "genes.genes_most_severe_gene.gene_lists.display_title", "genes.genes_most_severe_gene.gene_lists.project.@id"]}} +{"variant": {"embedded_field": ["transcript.csq_consequence.var_conseq_id", "transcript.csq_consequence.definition", "transcript.csq_consequence.impact", "transcript.csq_consequence.location", "transcript.csq_consequence.coding_effect", "transcript.csq_consequence.var_conseq_name", "transcript.csq_gene.gene_symbol", "transcript.csq_gene.ensgid", "genes.genes_most_severe_gene.s_het", "genes.genes_most_severe_gene.oe_mis", "genes.genes_most_severe_gene.oe_lof", "genes.genes_most_severe_gene.oe_lof_upper", "genes.genes_most_severe_consequence.display_title", "genes.genes_most_severe_consequence.impact", "genes.genes_most_severe_consequence.location", "genes.genes_most_severe_consequence.coding_effect", "genes.genes_most_severe_gene.gene_lists.display_title"]}} diff --git a/src/encoded/schemas/variant_sample.json b/src/encoded/schemas/variant_sample.json index dd75dbe66e..81831f2320 100644 --- a/src/encoded/schemas/variant_sample.json +++ b/src/encoded/schemas/variant_sample.json @@ -17,6 +17,35 @@ "title": "Sample Variant", "description": "Schema for variant info for sample", "id": "/profiles/variant_sample.json", + "mixinProperties": [ + { + "$ref": "mixins.json#/schema_version" + }, + { + "$ref": "mixins.json#/uuid" + }, + { + "$ref": "mixins.json#/aliases" + }, + { + "$ref": "mixins.json#/submitted" + }, + { + "$ref": "mixins.json#/modified" + }, + { + "$ref": "mixins.json#/status" + }, + { + "$ref": "mixins.json#/attribution" + }, + { + "$ref": "mixins.json#/notes" + }, + { + "$ref": "mixins.json#/static_embeds" + } + ], "properties": { "AD": { "title": "Allelic Depth", diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index daec0289fd..f6e71b2191 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -863,7 +863,7 @@ def format_facets(self, es_results): # bucket, so we must force it in and infer its counts - Will 6/21/21 hit_difference = total_hits - bucket_hits if hit_difference > 0: - bucket_location['buckets'].append({ + result_facet['ranges'].append({ 'key': 'No value', 'doc_count': hit_difference }) diff --git a/src/encoded/tests/test_variant_table_intake.py b/src/encoded/tests/test_variant_table_intake.py index b002f936bb..306e63d010 100644 --- a/src/encoded/tests/test_variant_table_intake.py +++ b/src/encoded/tests/test_variant_table_intake.py @@ -33,9 +33,9 @@ 'transcript.vep_consequence.var_conseq_name'] VARIANT_TABLE_VERSION = 'annV0.5.4' VARIANT_TABLE_DATE = '06.23.2021' -NUMBER_ANNOTATION_FIELDS = 237 +NUMBER_ANNOTATION_FIELDS = 236 SAMPLE_FIELDS_EXPECTED = 26 -VARIANT_FIELDS_EXPECTED = 211 +VARIANT_FIELDS_EXPECTED = 210 TRANSCRIPT_FIELDS_EXPECTED = 30 diff --git a/src/encoded/tests/testing_views.py b/src/encoded/tests/testing_views.py index 12e08c9098..985fe33a50 100644 --- a/src/encoded/tests/testing_views.py +++ b/src/encoded/tests/testing_views.py @@ -448,6 +448,7 @@ class TestingBucketRangeFacets(Item): 'title': 'No value integer array', 'aggregation_type': 'range', 'ranges': [ + {'from': 0, 'to': 0}, # test zero range faceting behavior {'from': 0, 'to': 5}, {'from': 5, 'to': 10} ] From 9dbbdf4dbb567ed08eb955182d3af34bd02a8423 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 23 Jun 2021 16:02:23 -0400 Subject: [PATCH 07/28] fix 0 replacement --- src/encoded/search/lucene_builder.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 94f0a5a870..b3003074ce 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -934,9 +934,10 @@ def _build_range_aggregation(cls, query_field, ranges): smallest IEEE 32 value such that the bucket effectively only captures the value 0. """ - if 'from' in ranges and 'to' in ranges: - if ranges['from'] == 0 and ranges['to'] == 0: - ranges['to'] = cls.SMALLEST_NONZERO_IEEE_32 + for r in ranges: + if 'from' in r and 'to' in r: + if r['from'] == 0 and r['to'] == 0: + r['to'] = cls.SMALLEST_NONZERO_IEEE_32 return { RANGE: { FIELD: query_field, From be23d091520351bd67d18ed1b8a079493c356ef3 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 24 Jun 2021 09:04:40 -0400 Subject: [PATCH 08/28] introduce rounding to collapse epsilon to 0 --- src/encoded/search/search.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index f6e71b2191..d61988563f 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -851,8 +851,10 @@ def format_facets(self, es_results): for b in bucket_location['buckets']: # if ranges match we found our bucket, propagate doc_count into 'ranges' field - if (r.get('from', self.MISSING) == b.get('from', self.MISSING) and - r.get('to', self.MISSING) == b.get('to', self.MISSING)): + # note that we must round to the 37th decimal place to round epsilon to 0 + # this is such a small round that info should be preserved in all actual cases + if (round(r.get('from', self.MISSING), 37) == round(b.get('from', self.MISSING), 37) and + round(r.get('to', self.MISSING), 37) == round(b.get('to', self.MISSING), 37)): r['doc_count'] = b['doc_count'] bucket_hits += b['doc_count'] break From d41716bbfa5ea061fd21ff64474160cc40d367e3 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 24 Jun 2021 09:51:13 -0400 Subject: [PATCH 09/28] add round_bound to handle fallback case --- src/encoded/search/search.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index d61988563f..3d1d949e71 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -850,11 +850,20 @@ def format_facets(self, es_results): for r in result_facet['ranges']: for b in bucket_location['buckets']: + def round_bound(bound): + """ Rounds a lower or upper bound to the nearest 37th decimal, effectively + keeping all lower precision values the same while rounding up epsilon + so it is properly merged into 'single value' buckets. + """ + if isinstance(bound, object): + return bound + return round(bound, 37) + # if ranges match we found our bucket, propagate doc_count into 'ranges' field # note that we must round to the 37th decimal place to round epsilon to 0 # this is such a small round that info should be preserved in all actual cases - if (round(r.get('from', self.MISSING), 37) == round(b.get('from', self.MISSING), 37) and - round(r.get('to', self.MISSING), 37) == round(b.get('to', self.MISSING), 37)): + if (round_bound(r.get('from', self.MISSING)) == round_bound(b.get('from', self.MISSING)) and + round_bound(r.get('to', self.MISSING)) == round_bound(b.get('to', self.MISSING))): r['doc_count'] = b['doc_count'] bucket_hits += b['doc_count'] break From 4ee330023acc73afbcd222072528165454e7e13f Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 24 Jun 2021 10:21:33 -0400 Subject: [PATCH 10/28] use type instead of isinstance --- src/encoded/search/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 3d1d949e71..b1718ce66e 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -855,7 +855,7 @@ def round_bound(bound): keeping all lower precision values the same while rounding up epsilon so it is properly merged into 'single value' buckets. """ - if isinstance(bound, object): + if type(bound) == object: return bound return round(bound, 37) From 0f5fdd8f5e6c4fcd490b01da38bbf9e8a022c616 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 24 Jun 2021 15:16:39 -0400 Subject: [PATCH 11/28] collapse no value counts into buckets that include 0 --- src/encoded/search/lucene_builder.py | 6 +++++- src/encoded/search/search.py | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index b3003074ce..9565be3356 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -380,7 +380,7 @@ def extract_field_from_to(cls, query_part): @classmethod def range_includes_zero(cls, range_filter): """ Returns True if the given range_filter includes the value 0. """ - for direction in cls.RANGE_DIRECTIONS: + for direction in cls.RANGE_DIRECTIONS + ['from', 'to']: if direction in range_filter: if direction == 'lte' and float(range_filter[direction]) >= 0: return True @@ -390,6 +390,10 @@ def range_includes_zero(cls, range_filter): return True elif direction == 'gt' and float(range_filter[direction]) < 0: return True + elif direction == 'from' and float(range_filter[direction]) <= 0: # same as gte + return True + elif direction == 'to' and float(range_filter[direction]) > 0: # same as lt + return True return False @classmethod diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index b1718ce66e..666188ba10 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -874,10 +874,15 @@ def round_bound(bound): # bucket, so we must force it in and infer its counts - Will 6/21/21 hit_difference = total_hits - bucket_hits if hit_difference > 0: - result_facet['ranges'].append({ - 'key': 'No value', - 'doc_count': hit_difference - }) + # Eventually, pass the "No value" bucket to the client + # result_facet['ranges'].append({ + # 'key': 'No value', + # 'doc_count': hit_difference + # }) + # But for now, add this value to all ranges that include 0 + for r in result_facet['ranges']: + if LuceneBuilder.range_includes_zero(r): + r['doc_count'] += hit_difference # process terms agg else: From ecb473600c0c0e97a33d90ae9281d0e4691389d8 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Fri, 25 Jun 2021 08:08:29 -0400 Subject: [PATCH 12/28] hack together proper 0 range detection --- src/encoded/search/lucene_builder.py | 40 +++++++++++++++++----------- src/encoded/search/search.py | 3 ++- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 9565be3356..7b41dab0c0 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -377,24 +377,34 @@ def extract_field_from_to(cls, query_part): return bool(match), match.group(1), match.group(2) return False, None, None + @classmethod + def canonicalize_bounds(cls, range_filter): + """ Canonicalizes the bounds of the range filter such that they are + inclusive on the lower bound and exclusive on the upper bound. + """ + lower, upper = -1e38, 1e38 # very large numbers that should never be in range + for direction, pivot in range_filter.items(): + if direction == 'lte': + if type(pivot) == int: + upper = pivot + 1 + else: + upper = pivot + cls.SMALLEST_NONZERO_IEEE_32 + elif direction == 'lt': + upper = pivot + elif direction == 'gte': + lower = pivot + elif direction == 'gt': + if type(pivot) == int: + lower = pivot - 1 + else: + lower = pivot - cls.SMALLEST_NONZERO_IEEE_32 + return lower, upper + @classmethod def range_includes_zero(cls, range_filter): """ Returns True if the given range_filter includes the value 0. """ - for direction in cls.RANGE_DIRECTIONS + ['from', 'to']: - if direction in range_filter: - if direction == 'lte' and float(range_filter[direction]) >= 0: - return True - elif direction == 'gte' and float(range_filter[direction]) <= 0: - return True - elif direction == 'lt' and float(range_filter[direction]) > 0: - return True - elif direction == 'gt' and float(range_filter[direction]) < 0: - return True - elif direction == 'from' and float(range_filter[direction]) <= 0: # same as gte - return True - elif direction == 'to' and float(range_filter[direction]) > 0: # same as lt - return True - return False + lower, upper = cls.canonicalize_bounds(range_filter) + return lower <= 0 <= upper @classmethod def handle_range_filters(cls, request, result, field_filters, doc_types): diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 666188ba10..89d6d310e9 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -881,7 +881,8 @@ def round_bound(bound): # }) # But for now, add this value to all ranges that include 0 for r in result_facet['ranges']: - if LuceneBuilder.range_includes_zero(r): + lower, upper = r.get('from', -1e38), r.get('to', 1e38) + if lower <= 0 <= upper: r['doc_count'] += hit_difference # process terms agg From b5a5cd66a75688c002ddc732ae7ec98a1ec5231c Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Fri, 25 Jun 2021 08:56:20 -0400 Subject: [PATCH 13/28] try again --- src/encoded/search/lucene_builder.py | 11 +++-------- src/encoded/search/search.py | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 7b41dab0c0..8947f07235 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -384,20 +384,15 @@ def canonicalize_bounds(cls, range_filter): """ lower, upper = -1e38, 1e38 # very large numbers that should never be in range for direction, pivot in range_filter.items(): + pivot = float(pivot) if direction == 'lte': - if type(pivot) == int: - upper = pivot + 1 - else: - upper = pivot + cls.SMALLEST_NONZERO_IEEE_32 + upper = pivot + cls.SMALLEST_NONZERO_IEEE_32 elif direction == 'lt': upper = pivot elif direction == 'gte': lower = pivot elif direction == 'gt': - if type(pivot) == int: - lower = pivot - 1 - else: - lower = pivot - cls.SMALLEST_NONZERO_IEEE_32 + lower = pivot - cls.SMALLEST_NONZERO_IEEE_32 return lower, upper @classmethod diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 89d6d310e9..b21aaaa563 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -843,6 +843,15 @@ def format_facets(self, es_results): if 'buckets' not in bucket_location: # account for nested structure bucket_location = bucket_location['primary_agg'] + def round_bound(bound): + """ Rounds a lower or upper bound to the nearest 37th decimal, effectively + keeping all lower precision values the same while rounding up epsilon + so it is properly merged into 'single value' buckets. + """ + if type(bound) == object: + return bound + return round(bound, 37) + # TODO - refactor ? # merge bucket labels from ranges into buckets total_hits = es_results.get('hits', {}).get('total', 0) @@ -850,15 +859,6 @@ def format_facets(self, es_results): for r in result_facet['ranges']: for b in bucket_location['buckets']: - def round_bound(bound): - """ Rounds a lower or upper bound to the nearest 37th decimal, effectively - keeping all lower precision values the same while rounding up epsilon - so it is properly merged into 'single value' buckets. - """ - if type(bound) == object: - return bound - return round(bound, 37) - # if ranges match we found our bucket, propagate doc_count into 'ranges' field # note that we must round to the 37th decimal place to round epsilon to 0 # this is such a small round that info should be preserved in all actual cases @@ -881,7 +881,7 @@ def round_bound(bound): # }) # But for now, add this value to all ranges that include 0 for r in result_facet['ranges']: - lower, upper = r.get('from', -1e38), r.get('to', 1e38) + lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) if lower <= 0 <= upper: r['doc_count'] += hit_difference From 96179923515db31d4ee7cedcd13d05bf308cdc5d Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Fri, 25 Jun 2021 10:53:41 -0400 Subject: [PATCH 14/28] repair bool/should exists interaction, remove count fixes --- src/encoded/search/lucene_builder.py | 2 +- src/encoded/search/search.py | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 8947f07235..ea77fa494f 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -667,7 +667,7 @@ def _check_and_remove_bool_should(cls, facet_filters, active_filter, query_field for or_term in inner_should: # this may be naive, but assume first non-terms # filter is the No value query - if TERMS in or_term: + if TERMS in or_term or RANGE in or_term: continue else: inner_bool = or_term diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index b21aaaa563..1a485ba94d 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -780,6 +780,12 @@ def fix_and_replace_nested_doc_count(result_facet, aggregations, full_agg_name): result_facet['terms'] = sorted(list(term_to_bucket.values()), key=lambda d: d['primary_agg_reverse_nested']['doc_count'], reverse=True) + @staticmethod + def determine_hit_difference(total, result_facet): + """ Determines the hit difference between the given total and the counts in the facets """ + for r in result_facet['ranges']: + pass + def format_facets(self, es_results): """ This method processes the 'aggregations' component of the ES response. @@ -872,18 +878,18 @@ def round_bound(bound): # on certain range fields we wish to include documents that have # no value - the bucket range aggregation does not return a No value # bucket, so we must force it in and infer its counts - Will 6/21/21 - hit_difference = total_hits - bucket_hits - if hit_difference > 0: + # hit_difference = total_hits - bucket_hits + # if hit_difference > 0: # Eventually, pass the "No value" bucket to the client # result_facet['ranges'].append({ # 'key': 'No value', # 'doc_count': hit_difference # }) # But for now, add this value to all ranges that include 0 - for r in result_facet['ranges']: - lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) - if lower <= 0 <= upper: - r['doc_count'] += hit_difference + # for r in result_facet['ranges']: + # lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) + # if lower <= 0 <= upper: + # r['doc_count'] += hit_difference # process terms agg else: From 39f1ee0ea83e85c81ddbc788378fd7d529bdc439 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Mon, 28 Jun 2021 14:26:24 -0400 Subject: [PATCH 15/28] add bucket that acts as a cardinality --- src/encoded/ingestion_listener.py | 3 ++- src/encoded/search/lucene_builder.py | 7 ++++++- src/encoded/search/search.py | 24 +++++++++++++----------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/encoded/ingestion_listener.py b/src/encoded/ingestion_listener.py index 331fa40b50..3b6a976813 100644 --- a/src/encoded/ingestion_listener.py +++ b/src/encoded/ingestion_listener.py @@ -249,7 +249,8 @@ def process_submission(*, submission_id, ingestion_type, app, bundles_bucket=Non except KeyError as e: debuglog("Manifest data is missing 'email' field.") if DEBUG_SUBMISSIONS: - import pdb; pdb.set_trace() + pass + # import pdb; pdb.set_trace() debuglog("processing submission %s with email %s" % (submission_id, email)) with vapp_for_email(email=email, app=app) as vapp: if DEBUG_SUBMISSIONS: diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index ea77fa494f..91c5fd2933 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -34,7 +34,8 @@ class LuceneBuilder: """ to_from_pattern = re.compile("^(.*)[.](to|from)$") RANGE_DIRECTIONS = ['gt', 'gte', 'lt', 'lte'] - SMALLEST_NONZERO_IEEE_32 = 1.1754e-38 # smallest epsilon > 0 + SMALLEST_NONZERO_IEEE_32 = 1.1754e-38 # smallest epsilon > 0 (estimate) + SMALLEST_NEGATIVE_IEEE_32 = -3.4028e38 # ref: http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch04s17.html # 1.00000000000000000000001 x 2^-127 = 1.1754e-38 @@ -947,6 +948,10 @@ def _build_range_aggregation(cls, query_field, ranges): if 'from' in r and 'to' in r: if r['from'] == 0 and r['to'] == 0: r['to'] = cls.SMALLEST_NONZERO_IEEE_32 + # Add cardinality bucket + ranges.append({ + 'from': cls.SMALLEST_NEGATIVE_IEEE_32, + }) return { RANGE: { FIELD: query_field, diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 1a485ba94d..594b9d7350 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -59,6 +59,7 @@ class SearchBuilder: ADDITIONAL_FACETS = 'additional_facet' # specifies an aggregation to compute in addition RESCUE_TERMS = 'rescue_terms' # special facet field that contains terms that should always have buckets DEBUG = 'debug' # search debug parameter + CARDINALITY_RANGE = '-3.4028E38-*' MISSING = object() def __init__(self, context, request, search_type=None, return_generator=False, forced_type='Search', @@ -861,35 +862,36 @@ def round_bound(bound): # TODO - refactor ? # merge bucket labels from ranges into buckets total_hits = es_results.get('hits', {}).get('total', 0) - bucket_hits = 0 - for r in result_facet['ranges']: - for b in bucket_location['buckets']: - + agg_cardinality = 0 + for b in bucket_location['buckets']: + if b['key'] == self.CARDINALITY_RANGE: + agg_cardinality = b['doc_count'] + continue + for r in result_facet['ranges']: # if ranges match we found our bucket, propagate doc_count into 'ranges' field # note that we must round to the 37th decimal place to round epsilon to 0 # this is such a small round that info should be preserved in all actual cases if (round_bound(r.get('from', self.MISSING)) == round_bound(b.get('from', self.MISSING)) and round_bound(r.get('to', self.MISSING)) == round_bound(b.get('to', self.MISSING))): r['doc_count'] = b['doc_count'] - bucket_hits += b['doc_count'] break # Normally, this difference would be zero, but when searching # on certain range fields we wish to include documents that have # no value - the bucket range aggregation does not return a No value # bucket, so we must force it in and infer its counts - Will 6/21/21 - # hit_difference = total_hits - bucket_hits - # if hit_difference > 0: + hit_difference = total_hits - agg_cardinality + if hit_difference > 0: # Eventually, pass the "No value" bucket to the client # result_facet['ranges'].append({ # 'key': 'No value', # 'doc_count': hit_difference # }) # But for now, add this value to all ranges that include 0 - # for r in result_facet['ranges']: - # lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) - # if lower <= 0 <= upper: - # r['doc_count'] += hit_difference + for r in result_facet['ranges']: + lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) + if lower <= 0 <= upper: + r['doc_count'] += hit_difference # process terms agg else: From 38cb6c82aa564c13ff2564eb947a439edf0ffedf Mon Sep 17 00:00:00 2001 From: Bianca Morris Date: Tue, 29 Jun 2021 15:40:30 -0400 Subject: [PATCH 16/28] link to spc beta (for testing only) --- package-lock.json | 78 ++++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 135023b3fe..6ae6a47dc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1437,8 +1437,8 @@ } }, "@hms-dbmi-bgm/shared-portal-components": { - "version": "github:4dn-dcic/shared-portal-components#333075d287e142b92afa17dca32d8113f6c96be5", - "from": "github:4dn-dcic/shared-portal-components#0.1.6", + "version": "github:4dn-dcic/shared-portal-components#8191b3ede643be0c0eea7545eabca9461b7176fc", + "from": "github:4dn-dcic/shared-portal-components#0.1.11b", "requires": { "auth0-lock": "^11.26.3", "aws-sdk": "^2.745.0", @@ -3810,12 +3810,12 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "auth0-js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.16.0.tgz", - "integrity": "sha512-I9jECErKZviVPVg0hKfG7URiGV/woyd0JOnh1SKH7Vy4/9n+AkJXgZqF7ayGV5W8sHKJl2aZ3ve3fc50LfR07g==", + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.16.2.tgz", + "integrity": "sha512-cF1nRjmMDezmhJ+ZwwYp23F0gPqU0zNmF/VvTpcwvCrEMl9lAvkCd4iburN1I7G8SYaaIYEfcGedCphpDZw6OQ==", "requires": { "base64-js": "^1.3.0", - "idtoken-verifier": "^2.0.3", + "idtoken-verifier": "^2.1.2", "js-cookie": "^2.2.0", "qs": "^6.7.0", "superagent": "^5.3.1", @@ -3831,13 +3831,14 @@ } }, "auth0-lock": { - "version": "11.30.0", - "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.30.0.tgz", - "integrity": "sha512-s+a4KT0wtKiUL3g33V5O38hZJEKJcic4cyKz75PXZufHtOVqs1AQXthzrhmSf9mHhpp15NWVJ5RRq2TIj+wNUg==", + "version": "11.30.3", + "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.30.3.tgz", + "integrity": "sha512-6KsJKzo1TUcbkzegBh7un1e9XYp0Xt4TPeYWQz+A53T/n2YdX75huJqRrX+pFk7SUimvVe7AnGEglvbOagEpVA==", "requires": { - "auth0-js": "^9.13.3", + "auth0-js": "^9.16.2", "auth0-password-policies": "^1.0.2", "blueimp-md5": "2.3.1", + "dompurify": "^2.2.8", "immutable": "^3.7.3", "jsonp": "^0.2.1", "password-sheriff": "^1.1.0", @@ -3848,7 +3849,7 @@ "react-transition-group": "^2.2.1", "trim": "1.0.0", "url-join": "^1.1.0", - "validator": "^13.1.1" + "validator": "^13.6.0" }, "dependencies": { "react": { @@ -3896,9 +3897,9 @@ } }, "aws-sdk": { - "version": "2.896.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.896.0.tgz", - "integrity": "sha512-tX2HmKLAdVY6/DuZTniQWwSC/5Kqpu1lpWf4iCkz3wR8RdDDUMoebIBKLjrTS/IDGQ2KFnzA8mZDn93bWgt1gQ==", + "version": "2.936.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.936.0.tgz", + "integrity": "sha512-X0kuyycck0fEPN5V0Vw1PmPIQ4BO0qupsL1El5jnXzXxNkf1cOmn5PMSxPXPsdcqua4w4h3sf143/yME0V9w8g==", "requires": { "buffer": "4.9.2", "events": "1.1.1", @@ -7085,6 +7086,11 @@ "domelementtype": "1" } }, + "dompurify": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.9.tgz", + "integrity": "sha512-+9MqacuigMIZ+1+EwoEltogyWGFTJZWU3258Rupxs+2CGs4H914G9er6pZbsme/bvb5L67o2rade9n21e4RW/w==" + }, "domready": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/domready/-/domready-0.3.0.tgz", @@ -9661,6 +9667,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "optional": true, "requires": { "is-glob": "^2.0.0" } @@ -10632,11 +10639,11 @@ "requires": { "ajv": "^6.10.0", "box-intersect": "^1.0.1", - "css-element-queries": "github:marcj/css-element-queries#4eae4654f4683923153d8dd8f5c0d1bc2067b2a8", + "css-element-queries": "github:marcj/css-element-queries", "cwise": "^1.0.10", "d3-array": "^1.2.1", "d3-axis": "^1.0.4", - "d3-brush": "github:flekschas/d3-brush#39c15e016ef5253a65da20eee78d192dba3d095d", + "d3-brush": "github:flekschas/d3-brush", "d3-color": "^1.0.3", "d3-drag": "^1.2.1", "d3-dsv": "^1.0.8", @@ -10659,7 +10666,7 @@ "prop-types": "^15.6.0", "pub-sub-es": "^1.2.1", "react": "^16.6.3", - "react-autocomplete": "github:tiemevanveen/react-autocomplete#a97a5d8d564fa30968cf0b39b6f9dfd2d5eafb24", + "react-autocomplete": "github:tiemevanveen/react-autocomplete#fix-176", "react-bootstrap": "0.32.1", "react-checkbox-tree": "^1.4.1", "react-color": "^2.13.8", @@ -11642,12 +11649,12 @@ } }, "idtoken-verifier": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.1.0.tgz", - "integrity": "sha512-X0423UM4Rc5bFb39Ai0YHr35rcexlu4oakKdYzSGZxtoPy84P86hhAbzlpgbgomcLOFRgzgKRvhY7YjO5g8OPA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.2.0.tgz", + "integrity": "sha512-D+KZkWx+4fDsLXrWIfwWOUAdEQczkqzs0REN0qpJ+9axG4kOeFFXXAFEmSfDErGh8dvM4vY8dQRROw9g8ZnNbw==", "requires": { "base64-js": "^1.3.0", - "crypto-js": "^3.2.1", + "crypto-js": "3.3.0", "es6-promise": "^4.2.8", "jsbn": "^1.1.0", "unfetch": "^4.1.0", @@ -12030,7 +12037,8 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "optional": true }, "is-finite": { "version": "1.1.0", @@ -12053,6 +12061,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "optional": true, "requires": { "is-extglob": "^1.0.0" } @@ -22819,12 +22828,14 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "optional": true }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -22838,7 +22849,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true }, "readdirp": { "version": "3.5.0", @@ -22899,12 +22911,14 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -22922,6 +22936,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -23089,6 +23104,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -23100,6 +23116,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -23159,7 +23176,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "optional": true }, "is-glob": { "version": "4.0.1", @@ -23174,6 +23192,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -23182,6 +23201,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -23191,12 +23211,14 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "optional": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "optional": true }, "micromatch": { "version": "3.1.10", diff --git a/package.json b/package.json index e3a4bf89f6..a909c87187 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.14.0", "@hms-dbmi-bgm/react-workflow-viz": "0.1.4", - "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.6", + "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.11b", "babel-polyfill": "^6.26.0", "d3": "^5.16.0", "detect-browser": "^3.0.1", From 38d37405e5b8cd1656d01ff8ca39ebe5f1d9503f Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 30 Jun 2021 09:43:19 -0400 Subject: [PATCH 17/28] add hide_facet_counts to facets, repair some range aggs erroneously noted as stats --- src/encoded/schemas/variant_sample.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/encoded/schemas/variant_sample.json b/src/encoded/schemas/variant_sample.json index 9bcd88d7b1..93faac9804 100644 --- a/src/encoded/schemas/variant_sample.json +++ b/src/encoded/schemas/variant_sample.json @@ -1287,6 +1287,7 @@ "aggregation_type": "range", "number_step": "any", "order": 18, + "hide_facet_counts": true, "grouping": "Pop. Frequency (gnomAD v3)", "ranges": [ { @@ -1316,6 +1317,7 @@ "aggregation_type": "range", "number_step": "any", "order": 19, + "hide_facet_counts": true, "grouping": "Pop. Frequency (gnomAD v3)", "ranges": [ { @@ -1356,9 +1358,10 @@ }, "variant.csq_gnomadg_ac-xy": { "title": "Hemizygous Count (v3)", - "aggregation_type": "stats", + "aggregation_type": "range", "number_step": 1, "order": 22, + "hide_facet_counts": true, "ranges": [ { "from": 0, @@ -1379,6 +1382,7 @@ "aggregation_type": "range", "number_step": "any", "order": 30, + "hide_facet_counts": true, "grouping": "Pop. Frequency (gnomAD v2 exome)", "ranges": [ { @@ -1408,6 +1412,7 @@ "aggregation_type": "range", "number_step": "any", "order": 31, + "hide_facet_counts": true, "grouping": "Pop. Frequency (gnomAD v2 exome)", "ranges": [ { @@ -1448,9 +1453,10 @@ }, "variant.csq_gnomade2_ac-xy": { "title": "Hemizygous Count (v2)", - "aggregation_type": "stats", + "aggregation_type": "range", "number_step": 1, "order": 34, + "hide_facet_counts": true, "ranges": [ { "from": 0, From 6283310ec524f48e6e1a55456fb5c55c2c3bc664 Mon Sep 17 00:00:00 2001 From: Bianca Morris Date: Wed, 30 Jun 2021 13:23:45 -0400 Subject: [PATCH 18/28] bump spc version to new beta --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ae6a47dc7..4c8b236e28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1437,8 +1437,8 @@ } }, "@hms-dbmi-bgm/shared-portal-components": { - "version": "github:4dn-dcic/shared-portal-components#8191b3ede643be0c0eea7545eabca9461b7176fc", - "from": "github:4dn-dcic/shared-portal-components#0.1.11b", + "version": "github:4dn-dcic/shared-portal-components#f918f47ebfdb8bcc631413129fc7a50763953072", + "from": "github:4dn-dcic/shared-portal-components#0.1.11b2", "requires": { "auth0-lock": "^11.26.3", "aws-sdk": "^2.745.0", diff --git a/package.json b/package.json index a909c87187..7b7c4c972d 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.14.0", "@hms-dbmi-bgm/react-workflow-viz": "0.1.4", - "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.11b", + "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.11b2", "babel-polyfill": "^6.26.0", "d3": "^5.16.0", "detect-browser": "^3.0.1", From 41771ca6bc6059388ae63525104377eea7b33490 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 30 Jun 2021 14:57:53 -0400 Subject: [PATCH 19/28] disable hit_difference code --- src/encoded/search/search.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 594b9d7350..9e9882837c 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -861,12 +861,12 @@ def round_bound(bound): # TODO - refactor ? # merge bucket labels from ranges into buckets - total_hits = es_results.get('hits', {}).get('total', 0) - agg_cardinality = 0 + # total_hits = es_results.get('hits', {}).get('total', 0) + # agg_cardinality = 0 for b in bucket_location['buckets']: - if b['key'] == self.CARDINALITY_RANGE: - agg_cardinality = b['doc_count'] - continue + # if b['key'] == self.CARDINALITY_RANGE: + # agg_cardinality = b['doc_count'] + # continue for r in result_facet['ranges']: # if ranges match we found our bucket, propagate doc_count into 'ranges' field # note that we must round to the 37th decimal place to round epsilon to 0 @@ -880,18 +880,18 @@ def round_bound(bound): # on certain range fields we wish to include documents that have # no value - the bucket range aggregation does not return a No value # bucket, so we must force it in and infer its counts - Will 6/21/21 - hit_difference = total_hits - agg_cardinality - if hit_difference > 0: + # hit_difference = total_hits - agg_cardinality + # if hit_difference > 0: # Eventually, pass the "No value" bucket to the client # result_facet['ranges'].append({ # 'key': 'No value', # 'doc_count': hit_difference # }) # But for now, add this value to all ranges that include 0 - for r in result_facet['ranges']: - lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) - if lower <= 0 <= upper: - r['doc_count'] += hit_difference + # for r in result_facet['ranges']: + # lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) + # if lower <= 0 <= upper: + # r['doc_count'] += hit_difference # process terms agg else: From d8ded61fdfee07e9e4c40bd4a20d175bc3a0634f Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 30 Jun 2021 15:34:03 -0400 Subject: [PATCH 20/28] undo stuff for the facet count fix, repair range query bound --- src/encoded/search/lucene_builder.py | 8 ++---- src/encoded/search/search.py | 42 +++------------------------- 2 files changed, 6 insertions(+), 44 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 91c5fd2933..601badce8f 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -432,9 +432,9 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): is_range, f_field, which = cls.extract_field_from_to(field) if is_range: if which == 'to': - range_direction = "lte" + range_direction = 'lt' else: - range_direction = "gte" + range_direction = 'gte' # If schema for field is not found (and range_type thus not set), # then treated as ordinary term filter (likely will get 0 results) @@ -948,10 +948,6 @@ def _build_range_aggregation(cls, query_field, ranges): if 'from' in r and 'to' in r: if r['from'] == 0 and r['to'] == 0: r['to'] = cls.SMALLEST_NONZERO_IEEE_32 - # Add cardinality bucket - ranges.append({ - 'from': cls.SMALLEST_NEGATIVE_IEEE_32, - }) return { RANGE: { FIELD: query_field, diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 9e9882837c..746e282311 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -850,49 +850,15 @@ def format_facets(self, es_results): if 'buckets' not in bucket_location: # account for nested structure bucket_location = bucket_location['primary_agg'] - def round_bound(bound): - """ Rounds a lower or upper bound to the nearest 37th decimal, effectively - keeping all lower precision values the same while rounding up epsilon - so it is properly merged into 'single value' buckets. - """ - if type(bound) == object: - return bound - return round(bound, 37) - # TODO - refactor ? # merge bucket labels from ranges into buckets - # total_hits = es_results.get('hits', {}).get('total', 0) - # agg_cardinality = 0 - for b in bucket_location['buckets']: - # if b['key'] == self.CARDINALITY_RANGE: - # agg_cardinality = b['doc_count'] - # continue - for r in result_facet['ranges']: - # if ranges match we found our bucket, propagate doc_count into 'ranges' field - # note that we must round to the 37th decimal place to round epsilon to 0 - # this is such a small round that info should be preserved in all actual cases - if (round_bound(r.get('from', self.MISSING)) == round_bound(b.get('from', self.MISSING)) and - round_bound(r.get('to', self.MISSING)) == round_bound(b.get('to', self.MISSING))): + for r in result_facet['ranges']: + for b in bucket_location['buckets']: + if (r.get('from', self.MISSING) == b.get('from', self.MISSING) and + r.get('to', self.MISSING) == b.get('to', self.MISSING)): r['doc_count'] = b['doc_count'] break - # Normally, this difference would be zero, but when searching - # on certain range fields we wish to include documents that have - # no value - the bucket range aggregation does not return a No value - # bucket, so we must force it in and infer its counts - Will 6/21/21 - # hit_difference = total_hits - agg_cardinality - # if hit_difference > 0: - # Eventually, pass the "No value" bucket to the client - # result_facet['ranges'].append({ - # 'key': 'No value', - # 'doc_count': hit_difference - # }) - # But for now, add this value to all ranges that include 0 - # for r in result_facet['ranges']: - # lower, upper = round_bound(r.get('from', -1e38)), round_bound(r.get('to', 1e38)) - # if lower <= 0 <= upper: - # r['doc_count'] += hit_difference - # process terms agg else: # do the below, except account for nested agg structure From cb65cc8cae82a1d432fc420f765afa0b76abe642 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Thu, 1 Jul 2021 16:19:38 -0400 Subject: [PATCH 21/28] update poetry --- poetry.lock | 728 ++++++++++++++++++++++++++-------------------------- 1 file changed, 367 insertions(+), 361 deletions(-) diff --git a/poetry.lock b/poetry.lock index f4be771bb3..174d88c6ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -77,7 +77,7 @@ lxml = ["lxml"] [[package]] name = "bitarray" -version = "2.1.0" +version = "2.1.3" description = "efficient arrays of booleans -- C extension" category = "main" optional = false @@ -106,291 +106,293 @@ s3transfer = ">=0.3.0,<0.4.0" [[package]] name = "boto3-stubs" -version = "1.17.86" -description = "Type annotations for boto3 1.17.86, generated by mypy-boto3-buider 4.14.1" +version = "1.17.103.post1" +description = "Type annotations for boto3 1.17.103, generated by mypy-boto3-buider 4.22.1" category = "dev" optional = false python-versions = ">=3.6" [package.dependencies] +botocore-stubs = "*" typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] -accessanalyzer = ["mypy-boto3-accessanalyzer (==1.17.86)"] -acm = ["mypy-boto3-acm (==1.17.86)"] -acm-pca = ["mypy-boto3-acm-pca (==1.17.86)"] -alexaforbusiness = ["mypy-boto3-alexaforbusiness (==1.17.86)"] -all = ["mypy-boto3-accessanalyzer (==1.17.86)", "mypy-boto3-acm (==1.17.86)", "mypy-boto3-acm-pca (==1.17.86)", "mypy-boto3-alexaforbusiness (==1.17.86)", "mypy-boto3-amp (==1.17.86)", "mypy-boto3-amplify (==1.17.86)", "mypy-boto3-amplifybackend (==1.17.86)", "mypy-boto3-apigateway (==1.17.86)", "mypy-boto3-apigatewaymanagementapi (==1.17.86)", "mypy-boto3-apigatewayv2 (==1.17.86)", "mypy-boto3-appconfig (==1.17.86)", "mypy-boto3-appflow (==1.17.86)", "mypy-boto3-appintegrations (==1.17.86)", "mypy-boto3-application-autoscaling (==1.17.86)", "mypy-boto3-application-insights (==1.17.86)", "mypy-boto3-applicationcostprofiler (==1.17.86)", "mypy-boto3-appmesh (==1.17.86)", "mypy-boto3-apprunner (==1.17.86)", "mypy-boto3-appstream (==1.17.86)", "mypy-boto3-appsync (==1.17.86)", "mypy-boto3-athena (==1.17.86)", "mypy-boto3-auditmanager (==1.17.86)", "mypy-boto3-autoscaling (==1.17.86)", "mypy-boto3-autoscaling-plans (==1.17.86)", "mypy-boto3-backup (==1.17.86)", "mypy-boto3-batch (==1.17.86)", "mypy-boto3-braket (==1.17.86)", "mypy-boto3-budgets (==1.17.86)", "mypy-boto3-ce (==1.17.86)", "mypy-boto3-chime (==1.17.86)", "mypy-boto3-cloud9 (==1.17.86)", "mypy-boto3-clouddirectory (==1.17.86)", "mypy-boto3-cloudformation (==1.17.86)", "mypy-boto3-cloudfront (==1.17.86)", "mypy-boto3-cloudhsm (==1.17.86)", "mypy-boto3-cloudhsmv2 (==1.17.86)", "mypy-boto3-cloudsearch (==1.17.86)", "mypy-boto3-cloudsearchdomain (==1.17.86)", "mypy-boto3-cloudtrail (==1.17.86)", "mypy-boto3-cloudwatch (==1.17.86)", "mypy-boto3-codeartifact (==1.17.86)", "mypy-boto3-codebuild (==1.17.86)", "mypy-boto3-codecommit (==1.17.86)", "mypy-boto3-codedeploy (==1.17.86)", "mypy-boto3-codeguru-reviewer (==1.17.86)", "mypy-boto3-codeguruprofiler (==1.17.86)", "mypy-boto3-codepipeline (==1.17.86)", "mypy-boto3-codestar (==1.17.86)", "mypy-boto3-codestar-connections (==1.17.86)", "mypy-boto3-codestar-notifications (==1.17.86)", "mypy-boto3-cognito-identity (==1.17.86)", "mypy-boto3-cognito-idp (==1.17.86)", "mypy-boto3-cognito-sync (==1.17.86)", "mypy-boto3-comprehend (==1.17.86)", "mypy-boto3-comprehendmedical (==1.17.86)", "mypy-boto3-compute-optimizer (==1.17.86)", "mypy-boto3-config (==1.17.86)", "mypy-boto3-connect (==1.17.86)", "mypy-boto3-connect-contact-lens (==1.17.86)", "mypy-boto3-connectparticipant (==1.17.86)", "mypy-boto3-cur (==1.17.86)", "mypy-boto3-customer-profiles (==1.17.86)", "mypy-boto3-databrew (==1.17.86)", "mypy-boto3-dataexchange (==1.17.86)", "mypy-boto3-datapipeline (==1.17.86)", "mypy-boto3-datasync (==1.17.86)", "mypy-boto3-dax (==1.17.86)", "mypy-boto3-detective (==1.17.86)", "mypy-boto3-devicefarm (==1.17.86)", "mypy-boto3-devops-guru (==1.17.86)", "mypy-boto3-directconnect (==1.17.86)", "mypy-boto3-discovery (==1.17.86)", "mypy-boto3-dlm (==1.17.86)", "mypy-boto3-dms (==1.17.86)", "mypy-boto3-docdb (==1.17.86)", "mypy-boto3-ds (==1.17.86)", "mypy-boto3-dynamodb (==1.17.86)", "mypy-boto3-dynamodbstreams (==1.17.86)", "mypy-boto3-ebs (==1.17.86)", "mypy-boto3-ec2 (==1.17.86)", "mypy-boto3-ec2-instance-connect (==1.17.86)", "mypy-boto3-ecr (==1.17.86)", "mypy-boto3-ecr-public (==1.17.86)", "mypy-boto3-ecs (==1.17.86)", "mypy-boto3-efs (==1.17.86)", "mypy-boto3-eks (==1.17.86)", "mypy-boto3-elastic-inference (==1.17.86)", "mypy-boto3-elasticache (==1.17.86)", "mypy-boto3-elasticbeanstalk (==1.17.86)", "mypy-boto3-elastictranscoder (==1.17.86)", "mypy-boto3-elb (==1.17.86)", "mypy-boto3-elbv2 (==1.17.86)", "mypy-boto3-emr (==1.17.86)", "mypy-boto3-emr-containers (==1.17.86)", "mypy-boto3-es (==1.17.86)", "mypy-boto3-events (==1.17.86)", "mypy-boto3-finspace (==1.17.86)", "mypy-boto3-finspace-data (==1.17.86)", "mypy-boto3-firehose (==1.17.86)", "mypy-boto3-fis (==1.17.86)", "mypy-boto3-fms (==1.17.86)", "mypy-boto3-forecast (==1.17.86)", "mypy-boto3-forecastquery (==1.17.86)", "mypy-boto3-frauddetector (==1.17.86)", "mypy-boto3-fsx (==1.17.86)", "mypy-boto3-gamelift (==1.17.86)", "mypy-boto3-glacier (==1.17.86)", "mypy-boto3-globalaccelerator (==1.17.86)", "mypy-boto3-glue (==1.17.86)", "mypy-boto3-greengrass (==1.17.86)", "mypy-boto3-greengrassv2 (==1.17.86)", "mypy-boto3-groundstation (==1.17.86)", "mypy-boto3-guardduty (==1.17.86)", "mypy-boto3-health (==1.17.86)", "mypy-boto3-healthlake (==1.17.86)", "mypy-boto3-honeycode (==1.17.86)", "mypy-boto3-iam (==1.17.86)", "mypy-boto3-identitystore (==1.17.86)", "mypy-boto3-imagebuilder (==1.17.86)", "mypy-boto3-importexport (==1.17.86)", "mypy-boto3-inspector (==1.17.86)", "mypy-boto3-iot (==1.17.86)", "mypy-boto3-iot-data (==1.17.86)", "mypy-boto3-iot-jobs-data (==1.17.86)", "mypy-boto3-iot1click-devices (==1.17.86)", "mypy-boto3-iot1click-projects (==1.17.86)", "mypy-boto3-iotanalytics (==1.17.86)", "mypy-boto3-iotdeviceadvisor (==1.17.86)", "mypy-boto3-iotevents (==1.17.86)", "mypy-boto3-iotevents-data (==1.17.86)", "mypy-boto3-iotfleethub (==1.17.86)", "mypy-boto3-iotsecuretunneling (==1.17.86)", "mypy-boto3-iotsitewise (==1.17.86)", "mypy-boto3-iotthingsgraph (==1.17.86)", "mypy-boto3-iotwireless (==1.17.86)", "mypy-boto3-ivs (==1.17.86)", "mypy-boto3-kafka (==1.17.86)", "mypy-boto3-kendra (==1.17.86)", "mypy-boto3-kinesis (==1.17.86)", "mypy-boto3-kinesis-video-archived-media (==1.17.86)", "mypy-boto3-kinesis-video-media (==1.17.86)", "mypy-boto3-kinesis-video-signaling (==1.17.86)", "mypy-boto3-kinesisanalytics (==1.17.86)", "mypy-boto3-kinesisanalyticsv2 (==1.17.86)", "mypy-boto3-kinesisvideo (==1.17.86)", "mypy-boto3-kms (==1.17.86)", "mypy-boto3-lakeformation (==1.17.86)", "mypy-boto3-lambda (==1.17.86)", "mypy-boto3-lex-models (==1.17.86)", "mypy-boto3-lex-runtime (==1.17.86)", "mypy-boto3-lexv2-models (==1.17.86)", "mypy-boto3-lexv2-runtime (==1.17.86)", "mypy-boto3-license-manager (==1.17.86)", "mypy-boto3-lightsail (==1.17.86)", "mypy-boto3-location (==1.17.86)", "mypy-boto3-logs (==1.17.86)", "mypy-boto3-lookoutequipment (==1.17.86)", "mypy-boto3-lookoutmetrics (==1.17.86)", "mypy-boto3-lookoutvision (==1.17.86)", "mypy-boto3-machinelearning (==1.17.86)", "mypy-boto3-macie (==1.17.86)", "mypy-boto3-macie2 (==1.17.86)", "mypy-boto3-managedblockchain (==1.17.86)", "mypy-boto3-marketplace-catalog (==1.17.86)", "mypy-boto3-marketplace-entitlement (==1.17.86)", "mypy-boto3-marketplacecommerceanalytics (==1.17.86)", "mypy-boto3-mediaconnect (==1.17.86)", "mypy-boto3-mediaconvert (==1.17.86)", "mypy-boto3-medialive (==1.17.86)", "mypy-boto3-mediapackage (==1.17.86)", "mypy-boto3-mediapackage-vod (==1.17.86)", "mypy-boto3-mediastore (==1.17.86)", "mypy-boto3-mediastore-data (==1.17.86)", "mypy-boto3-mediatailor (==1.17.86)", "mypy-boto3-meteringmarketplace (==1.17.86)", "mypy-boto3-mgh (==1.17.86)", "mypy-boto3-mgn (==1.17.86)", "mypy-boto3-migrationhub-config (==1.17.86)", "mypy-boto3-mobile (==1.17.86)", "mypy-boto3-mq (==1.17.86)", "mypy-boto3-mturk (==1.17.86)", "mypy-boto3-mwaa (==1.17.86)", "mypy-boto3-neptune (==1.17.86)", "mypy-boto3-network-firewall (==1.17.86)", "mypy-boto3-networkmanager (==1.17.86)", "mypy-boto3-nimble (==1.17.86)", "mypy-boto3-opsworks (==1.17.86)", "mypy-boto3-opsworkscm (==1.17.86)", "mypy-boto3-organizations (==1.17.86)", "mypy-boto3-outposts (==1.17.86)", "mypy-boto3-personalize (==1.17.86)", "mypy-boto3-personalize-events (==1.17.86)", "mypy-boto3-personalize-runtime (==1.17.86)", "mypy-boto3-pi (==1.17.86)", "mypy-boto3-pinpoint (==1.17.86)", "mypy-boto3-pinpoint-email (==1.17.86)", "mypy-boto3-pinpoint-sms-voice (==1.17.86)", "mypy-boto3-polly (==1.17.86)", "mypy-boto3-pricing (==1.17.86)", "mypy-boto3-qldb (==1.17.86)", "mypy-boto3-qldb-session (==1.17.86)", "mypy-boto3-quicksight (==1.17.86)", "mypy-boto3-ram (==1.17.86)", "mypy-boto3-rds (==1.17.86)", "mypy-boto3-rds-data (==1.17.86)", "mypy-boto3-redshift (==1.17.86)", "mypy-boto3-redshift-data (==1.17.86)", "mypy-boto3-rekognition (==1.17.86)", "mypy-boto3-resource-groups (==1.17.86)", "mypy-boto3-resourcegroupstaggingapi (==1.17.86)", "mypy-boto3-robomaker (==1.17.86)", "mypy-boto3-route53 (==1.17.86)", "mypy-boto3-route53domains (==1.17.86)", "mypy-boto3-route53resolver (==1.17.86)", "mypy-boto3-s3 (==1.17.86)", "mypy-boto3-s3control (==1.17.86)", "mypy-boto3-s3outposts (==1.17.86)", "mypy-boto3-sagemaker (==1.17.86)", "mypy-boto3-sagemaker-a2i-runtime (==1.17.86)", "mypy-boto3-sagemaker-edge (==1.17.86)", "mypy-boto3-sagemaker-featurestore-runtime (==1.17.86)", "mypy-boto3-sagemaker-runtime (==1.17.86)", "mypy-boto3-savingsplans (==1.17.86)", "mypy-boto3-schemas (==1.17.86)", "mypy-boto3-sdb (==1.17.86)", "mypy-boto3-secretsmanager (==1.17.86)", "mypy-boto3-securityhub (==1.17.86)", "mypy-boto3-serverlessrepo (==1.17.86)", "mypy-boto3-service-quotas (==1.17.86)", "mypy-boto3-servicecatalog (==1.17.86)", "mypy-boto3-servicecatalog-appregistry (==1.17.86)", "mypy-boto3-servicediscovery (==1.17.86)", "mypy-boto3-ses (==1.17.86)", "mypy-boto3-sesv2 (==1.17.86)", "mypy-boto3-shield (==1.17.86)", "mypy-boto3-signer (==1.17.86)", "mypy-boto3-sms (==1.17.86)", "mypy-boto3-sms-voice (==1.17.86)", "mypy-boto3-snowball (==1.17.86)", "mypy-boto3-sns (==1.17.86)", "mypy-boto3-sqs (==1.17.86)", "mypy-boto3-ssm (==1.17.86)", "mypy-boto3-ssm-contacts (==1.17.86)", "mypy-boto3-ssm-incidents (==1.17.86)", "mypy-boto3-sso (==1.17.86)", "mypy-boto3-sso-admin (==1.17.86)", "mypy-boto3-sso-oidc (==1.17.86)", "mypy-boto3-stepfunctions (==1.17.86)", "mypy-boto3-storagegateway (==1.17.86)", "mypy-boto3-sts (==1.17.86)", "mypy-boto3-support (==1.17.86)", "mypy-boto3-swf (==1.17.86)", "mypy-boto3-synthetics (==1.17.86)", "mypy-boto3-textract (==1.17.86)", "mypy-boto3-timestream-query (==1.17.86)", "mypy-boto3-timestream-write (==1.17.86)", "mypy-boto3-transcribe (==1.17.86)", "mypy-boto3-transfer (==1.17.86)", "mypy-boto3-translate (==1.17.86)", "mypy-boto3-waf (==1.17.86)", "mypy-boto3-waf-regional (==1.17.86)", "mypy-boto3-wafv2 (==1.17.86)", "mypy-boto3-wellarchitected (==1.17.86)", "mypy-boto3-workdocs (==1.17.86)", "mypy-boto3-worklink (==1.17.86)", "mypy-boto3-workmail (==1.17.86)", "mypy-boto3-workmailmessageflow (==1.17.86)", "mypy-boto3-workspaces (==1.17.86)", "mypy-boto3-xray (==1.17.86)"] -amp = ["mypy-boto3-amp (==1.17.86)"] -amplify = ["mypy-boto3-amplify (==1.17.86)"] -amplifybackend = ["mypy-boto3-amplifybackend (==1.17.86)"] -apigateway = ["mypy-boto3-apigateway (==1.17.86)"] -apigatewaymanagementapi = ["mypy-boto3-apigatewaymanagementapi (==1.17.86)"] -apigatewayv2 = ["mypy-boto3-apigatewayv2 (==1.17.86)"] -appconfig = ["mypy-boto3-appconfig (==1.17.86)"] -appflow = ["mypy-boto3-appflow (==1.17.86)"] -appintegrations = ["mypy-boto3-appintegrations (==1.17.86)"] -application-autoscaling = ["mypy-boto3-application-autoscaling (==1.17.86)"] -application-insights = ["mypy-boto3-application-insights (==1.17.86)"] -applicationcostprofiler = ["mypy-boto3-applicationcostprofiler (==1.17.86)"] -appmesh = ["mypy-boto3-appmesh (==1.17.86)"] -apprunner = ["mypy-boto3-apprunner (==1.17.86)"] -appstream = ["mypy-boto3-appstream (==1.17.86)"] -appsync = ["mypy-boto3-appsync (==1.17.86)"] -athena = ["mypy-boto3-athena (==1.17.86)"] -auditmanager = ["mypy-boto3-auditmanager (==1.17.86)"] -autoscaling = ["mypy-boto3-autoscaling (==1.17.86)"] -autoscaling-plans = ["mypy-boto3-autoscaling-plans (==1.17.86)"] -backup = ["mypy-boto3-backup (==1.17.86)"] -batch = ["mypy-boto3-batch (==1.17.86)"] -braket = ["mypy-boto3-braket (==1.17.86)"] -budgets = ["mypy-boto3-budgets (==1.17.86)"] -ce = ["mypy-boto3-ce (==1.17.86)"] -chime = ["mypy-boto3-chime (==1.17.86)"] -cloud9 = ["mypy-boto3-cloud9 (==1.17.86)"] -clouddirectory = ["mypy-boto3-clouddirectory (==1.17.86)"] -cloudformation = ["mypy-boto3-cloudformation (==1.17.86)"] -cloudfront = ["mypy-boto3-cloudfront (==1.17.86)"] -cloudhsm = ["mypy-boto3-cloudhsm (==1.17.86)"] -cloudhsmv2 = ["mypy-boto3-cloudhsmv2 (==1.17.86)"] -cloudsearch = ["mypy-boto3-cloudsearch (==1.17.86)"] -cloudsearchdomain = ["mypy-boto3-cloudsearchdomain (==1.17.86)"] -cloudtrail = ["mypy-boto3-cloudtrail (==1.17.86)"] -cloudwatch = ["mypy-boto3-cloudwatch (==1.17.86)"] -codeartifact = ["mypy-boto3-codeartifact (==1.17.86)"] -codebuild = ["mypy-boto3-codebuild (==1.17.86)"] -codecommit = ["mypy-boto3-codecommit (==1.17.86)"] -codedeploy = ["mypy-boto3-codedeploy (==1.17.86)"] -codeguru-reviewer = ["mypy-boto3-codeguru-reviewer (==1.17.86)"] -codeguruprofiler = ["mypy-boto3-codeguruprofiler (==1.17.86)"] -codepipeline = ["mypy-boto3-codepipeline (==1.17.86)"] -codestar = ["mypy-boto3-codestar (==1.17.86)"] -codestar-connections = ["mypy-boto3-codestar-connections (==1.17.86)"] -codestar-notifications = ["mypy-boto3-codestar-notifications (==1.17.86)"] -cognito-identity = ["mypy-boto3-cognito-identity (==1.17.86)"] -cognito-idp = ["mypy-boto3-cognito-idp (==1.17.86)"] -cognito-sync = ["mypy-boto3-cognito-sync (==1.17.86)"] -comprehend = ["mypy-boto3-comprehend (==1.17.86)"] -comprehendmedical = ["mypy-boto3-comprehendmedical (==1.17.86)"] -compute-optimizer = ["mypy-boto3-compute-optimizer (==1.17.86)"] -config = ["mypy-boto3-config (==1.17.86)"] -connect = ["mypy-boto3-connect (==1.17.86)"] -connect-contact-lens = ["mypy-boto3-connect-contact-lens (==1.17.86)"] -connectparticipant = ["mypy-boto3-connectparticipant (==1.17.86)"] -cur = ["mypy-boto3-cur (==1.17.86)"] -customer-profiles = ["mypy-boto3-customer-profiles (==1.17.86)"] -databrew = ["mypy-boto3-databrew (==1.17.86)"] -dataexchange = ["mypy-boto3-dataexchange (==1.17.86)"] -datapipeline = ["mypy-boto3-datapipeline (==1.17.86)"] -datasync = ["mypy-boto3-datasync (==1.17.86)"] -dax = ["mypy-boto3-dax (==1.17.86)"] -detective = ["mypy-boto3-detective (==1.17.86)"] -devicefarm = ["mypy-boto3-devicefarm (==1.17.86)"] -devops-guru = ["mypy-boto3-devops-guru (==1.17.86)"] -directconnect = ["mypy-boto3-directconnect (==1.17.86)"] -discovery = ["mypy-boto3-discovery (==1.17.86)"] -dlm = ["mypy-boto3-dlm (==1.17.86)"] -dms = ["mypy-boto3-dms (==1.17.86)"] -docdb = ["mypy-boto3-docdb (==1.17.86)"] -ds = ["mypy-boto3-ds (==1.17.86)"] -dynamodb = ["mypy-boto3-dynamodb (==1.17.86)"] -dynamodbstreams = ["mypy-boto3-dynamodbstreams (==1.17.86)"] -ebs = ["mypy-boto3-ebs (==1.17.86)"] -ec2 = ["mypy-boto3-ec2 (==1.17.86)"] -ec2-instance-connect = ["mypy-boto3-ec2-instance-connect (==1.17.86)"] -ecr = ["mypy-boto3-ecr (==1.17.86)"] -ecr-public = ["mypy-boto3-ecr-public (==1.17.86)"] -ecs = ["mypy-boto3-ecs (==1.17.86)"] -efs = ["mypy-boto3-efs (==1.17.86)"] -eks = ["mypy-boto3-eks (==1.17.86)"] -elastic-inference = ["mypy-boto3-elastic-inference (==1.17.86)"] -elasticache = ["mypy-boto3-elasticache (==1.17.86)"] -elasticbeanstalk = ["mypy-boto3-elasticbeanstalk (==1.17.86)"] -elastictranscoder = ["mypy-boto3-elastictranscoder (==1.17.86)"] -elb = ["mypy-boto3-elb (==1.17.86)"] -elbv2 = ["mypy-boto3-elbv2 (==1.17.86)"] -emr = ["mypy-boto3-emr (==1.17.86)"] -emr-containers = ["mypy-boto3-emr-containers (==1.17.86)"] -es = ["mypy-boto3-es (==1.17.86)"] -essential = ["mypy-boto3-cloudformation (==1.17.86)", "mypy-boto3-dynamodb (==1.17.86)", "mypy-boto3-ec2 (==1.17.86)", "mypy-boto3-lambda (==1.17.86)", "mypy-boto3-rds (==1.17.86)", "mypy-boto3-s3 (==1.17.86)", "mypy-boto3-sqs (==1.17.86)"] -events = ["mypy-boto3-events (==1.17.86)"] -finspace = ["mypy-boto3-finspace (==1.17.86)"] -finspace-data = ["mypy-boto3-finspace-data (==1.17.86)"] -firehose = ["mypy-boto3-firehose (==1.17.86)"] -fis = ["mypy-boto3-fis (==1.17.86)"] -fms = ["mypy-boto3-fms (==1.17.86)"] -forecast = ["mypy-boto3-forecast (==1.17.86)"] -forecastquery = ["mypy-boto3-forecastquery (==1.17.86)"] -frauddetector = ["mypy-boto3-frauddetector (==1.17.86)"] -fsx = ["mypy-boto3-fsx (==1.17.86)"] -gamelift = ["mypy-boto3-gamelift (==1.17.86)"] -glacier = ["mypy-boto3-glacier (==1.17.86)"] -globalaccelerator = ["mypy-boto3-globalaccelerator (==1.17.86)"] -glue = ["mypy-boto3-glue (==1.17.86)"] -greengrass = ["mypy-boto3-greengrass (==1.17.86)"] -greengrassv2 = ["mypy-boto3-greengrassv2 (==1.17.86)"] -groundstation = ["mypy-boto3-groundstation (==1.17.86)"] -guardduty = ["mypy-boto3-guardduty (==1.17.86)"] -health = ["mypy-boto3-health (==1.17.86)"] -healthlake = ["mypy-boto3-healthlake (==1.17.86)"] -honeycode = ["mypy-boto3-honeycode (==1.17.86)"] -iam = ["mypy-boto3-iam (==1.17.86)"] -identitystore = ["mypy-boto3-identitystore (==1.17.86)"] -imagebuilder = ["mypy-boto3-imagebuilder (==1.17.86)"] -importexport = ["mypy-boto3-importexport (==1.17.86)"] -inspector = ["mypy-boto3-inspector (==1.17.86)"] -iot = ["mypy-boto3-iot (==1.17.86)"] -iot-data = ["mypy-boto3-iot-data (==1.17.86)"] -iot-jobs-data = ["mypy-boto3-iot-jobs-data (==1.17.86)"] -iot1click-devices = ["mypy-boto3-iot1click-devices (==1.17.86)"] -iot1click-projects = ["mypy-boto3-iot1click-projects (==1.17.86)"] -iotanalytics = ["mypy-boto3-iotanalytics (==1.17.86)"] -iotdeviceadvisor = ["mypy-boto3-iotdeviceadvisor (==1.17.86)"] -iotevents = ["mypy-boto3-iotevents (==1.17.86)"] -iotevents-data = ["mypy-boto3-iotevents-data (==1.17.86)"] -iotfleethub = ["mypy-boto3-iotfleethub (==1.17.86)"] -iotsecuretunneling = ["mypy-boto3-iotsecuretunneling (==1.17.86)"] -iotsitewise = ["mypy-boto3-iotsitewise (==1.17.86)"] -iotthingsgraph = ["mypy-boto3-iotthingsgraph (==1.17.86)"] -iotwireless = ["mypy-boto3-iotwireless (==1.17.86)"] -ivs = ["mypy-boto3-ivs (==1.17.86)"] -kafka = ["mypy-boto3-kafka (==1.17.86)"] -kendra = ["mypy-boto3-kendra (==1.17.86)"] -kinesis = ["mypy-boto3-kinesis (==1.17.86)"] -kinesis-video-archived-media = ["mypy-boto3-kinesis-video-archived-media (==1.17.86)"] -kinesis-video-media = ["mypy-boto3-kinesis-video-media (==1.17.86)"] -kinesis-video-signaling = ["mypy-boto3-kinesis-video-signaling (==1.17.86)"] -kinesisanalytics = ["mypy-boto3-kinesisanalytics (==1.17.86)"] -kinesisanalyticsv2 = ["mypy-boto3-kinesisanalyticsv2 (==1.17.86)"] -kinesisvideo = ["mypy-boto3-kinesisvideo (==1.17.86)"] -kms = ["mypy-boto3-kms (==1.17.86)"] -lakeformation = ["mypy-boto3-lakeformation (==1.17.86)"] -lambda = ["mypy-boto3-lambda (==1.17.86)"] -lex-models = ["mypy-boto3-lex-models (==1.17.86)"] -lex-runtime = ["mypy-boto3-lex-runtime (==1.17.86)"] -lexv2-models = ["mypy-boto3-lexv2-models (==1.17.86)"] -lexv2-runtime = ["mypy-boto3-lexv2-runtime (==1.17.86)"] -license-manager = ["mypy-boto3-license-manager (==1.17.86)"] -lightsail = ["mypy-boto3-lightsail (==1.17.86)"] -location = ["mypy-boto3-location (==1.17.86)"] -logs = ["mypy-boto3-logs (==1.17.86)"] -lookoutequipment = ["mypy-boto3-lookoutequipment (==1.17.86)"] -lookoutmetrics = ["mypy-boto3-lookoutmetrics (==1.17.86)"] -lookoutvision = ["mypy-boto3-lookoutvision (==1.17.86)"] -machinelearning = ["mypy-boto3-machinelearning (==1.17.86)"] -macie = ["mypy-boto3-macie (==1.17.86)"] -macie2 = ["mypy-boto3-macie2 (==1.17.86)"] -managedblockchain = ["mypy-boto3-managedblockchain (==1.17.86)"] -marketplace-catalog = ["mypy-boto3-marketplace-catalog (==1.17.86)"] -marketplace-entitlement = ["mypy-boto3-marketplace-entitlement (==1.17.86)"] -marketplacecommerceanalytics = ["mypy-boto3-marketplacecommerceanalytics (==1.17.86)"] -mediaconnect = ["mypy-boto3-mediaconnect (==1.17.86)"] -mediaconvert = ["mypy-boto3-mediaconvert (==1.17.86)"] -medialive = ["mypy-boto3-medialive (==1.17.86)"] -mediapackage = ["mypy-boto3-mediapackage (==1.17.86)"] -mediapackage-vod = ["mypy-boto3-mediapackage-vod (==1.17.86)"] -mediastore = ["mypy-boto3-mediastore (==1.17.86)"] -mediastore-data = ["mypy-boto3-mediastore-data (==1.17.86)"] -mediatailor = ["mypy-boto3-mediatailor (==1.17.86)"] -meteringmarketplace = ["mypy-boto3-meteringmarketplace (==1.17.86)"] -mgh = ["mypy-boto3-mgh (==1.17.86)"] -mgn = ["mypy-boto3-mgn (==1.17.86)"] -migrationhub-config = ["mypy-boto3-migrationhub-config (==1.17.86)"] -mobile = ["mypy-boto3-mobile (==1.17.86)"] -mq = ["mypy-boto3-mq (==1.17.86)"] -mturk = ["mypy-boto3-mturk (==1.17.86)"] -mwaa = ["mypy-boto3-mwaa (==1.17.86)"] -neptune = ["mypy-boto3-neptune (==1.17.86)"] -network-firewall = ["mypy-boto3-network-firewall (==1.17.86)"] -networkmanager = ["mypy-boto3-networkmanager (==1.17.86)"] -nimble = ["mypy-boto3-nimble (==1.17.86)"] -opsworks = ["mypy-boto3-opsworks (==1.17.86)"] -opsworkscm = ["mypy-boto3-opsworkscm (==1.17.86)"] -organizations = ["mypy-boto3-organizations (==1.17.86)"] -outposts = ["mypy-boto3-outposts (==1.17.86)"] -personalize = ["mypy-boto3-personalize (==1.17.86)"] -personalize-events = ["mypy-boto3-personalize-events (==1.17.86)"] -personalize-runtime = ["mypy-boto3-personalize-runtime (==1.17.86)"] -pi = ["mypy-boto3-pi (==1.17.86)"] -pinpoint = ["mypy-boto3-pinpoint (==1.17.86)"] -pinpoint-email = ["mypy-boto3-pinpoint-email (==1.17.86)"] -pinpoint-sms-voice = ["mypy-boto3-pinpoint-sms-voice (==1.17.86)"] -polly = ["mypy-boto3-polly (==1.17.86)"] -pricing = ["mypy-boto3-pricing (==1.17.86)"] -qldb = ["mypy-boto3-qldb (==1.17.86)"] -qldb-session = ["mypy-boto3-qldb-session (==1.17.86)"] -quicksight = ["mypy-boto3-quicksight (==1.17.86)"] -ram = ["mypy-boto3-ram (==1.17.86)"] -rds = ["mypy-boto3-rds (==1.17.86)"] -rds-data = ["mypy-boto3-rds-data (==1.17.86)"] -redshift = ["mypy-boto3-redshift (==1.17.86)"] -redshift-data = ["mypy-boto3-redshift-data (==1.17.86)"] -rekognition = ["mypy-boto3-rekognition (==1.17.86)"] -resource-groups = ["mypy-boto3-resource-groups (==1.17.86)"] -resourcegroupstaggingapi = ["mypy-boto3-resourcegroupstaggingapi (==1.17.86)"] -robomaker = ["mypy-boto3-robomaker (==1.17.86)"] -route53 = ["mypy-boto3-route53 (==1.17.86)"] -route53domains = ["mypy-boto3-route53domains (==1.17.86)"] -route53resolver = ["mypy-boto3-route53resolver (==1.17.86)"] -s3 = ["mypy-boto3-s3 (==1.17.86)"] -s3control = ["mypy-boto3-s3control (==1.17.86)"] -s3outposts = ["mypy-boto3-s3outposts (==1.17.86)"] -sagemaker = ["mypy-boto3-sagemaker (==1.17.86)"] -sagemaker-a2i-runtime = ["mypy-boto3-sagemaker-a2i-runtime (==1.17.86)"] -sagemaker-edge = ["mypy-boto3-sagemaker-edge (==1.17.86)"] -sagemaker-featurestore-runtime = ["mypy-boto3-sagemaker-featurestore-runtime (==1.17.86)"] -sagemaker-runtime = ["mypy-boto3-sagemaker-runtime (==1.17.86)"] -savingsplans = ["mypy-boto3-savingsplans (==1.17.86)"] -schemas = ["mypy-boto3-schemas (==1.17.86)"] -sdb = ["mypy-boto3-sdb (==1.17.86)"] -secretsmanager = ["mypy-boto3-secretsmanager (==1.17.86)"] -securityhub = ["mypy-boto3-securityhub (==1.17.86)"] -serverlessrepo = ["mypy-boto3-serverlessrepo (==1.17.86)"] -service-quotas = ["mypy-boto3-service-quotas (==1.17.86)"] -servicecatalog = ["mypy-boto3-servicecatalog (==1.17.86)"] -servicecatalog-appregistry = ["mypy-boto3-servicecatalog-appregistry (==1.17.86)"] -servicediscovery = ["mypy-boto3-servicediscovery (==1.17.86)"] -ses = ["mypy-boto3-ses (==1.17.86)"] -sesv2 = ["mypy-boto3-sesv2 (==1.17.86)"] -shield = ["mypy-boto3-shield (==1.17.86)"] -signer = ["mypy-boto3-signer (==1.17.86)"] -sms = ["mypy-boto3-sms (==1.17.86)"] -sms-voice = ["mypy-boto3-sms-voice (==1.17.86)"] -snowball = ["mypy-boto3-snowball (==1.17.86)"] -sns = ["mypy-boto3-sns (==1.17.86)"] -sqs = ["mypy-boto3-sqs (==1.17.86)"] -ssm = ["mypy-boto3-ssm (==1.17.86)"] -ssm-contacts = ["mypy-boto3-ssm-contacts (==1.17.86)"] -ssm-incidents = ["mypy-boto3-ssm-incidents (==1.17.86)"] -sso = ["mypy-boto3-sso (==1.17.86)"] -sso-admin = ["mypy-boto3-sso-admin (==1.17.86)"] -sso-oidc = ["mypy-boto3-sso-oidc (==1.17.86)"] -stepfunctions = ["mypy-boto3-stepfunctions (==1.17.86)"] -storagegateway = ["mypy-boto3-storagegateway (==1.17.86)"] -sts = ["mypy-boto3-sts (==1.17.86)"] -support = ["mypy-boto3-support (==1.17.86)"] -swf = ["mypy-boto3-swf (==1.17.86)"] -synthetics = ["mypy-boto3-synthetics (==1.17.86)"] -textract = ["mypy-boto3-textract (==1.17.86)"] -timestream-query = ["mypy-boto3-timestream-query (==1.17.86)"] -timestream-write = ["mypy-boto3-timestream-write (==1.17.86)"] -transcribe = ["mypy-boto3-transcribe (==1.17.86)"] -transfer = ["mypy-boto3-transfer (==1.17.86)"] -translate = ["mypy-boto3-translate (==1.17.86)"] -waf = ["mypy-boto3-waf (==1.17.86)"] -waf-regional = ["mypy-boto3-waf-regional (==1.17.86)"] -wafv2 = ["mypy-boto3-wafv2 (==1.17.86)"] -wellarchitected = ["mypy-boto3-wellarchitected (==1.17.86)"] -workdocs = ["mypy-boto3-workdocs (==1.17.86)"] -worklink = ["mypy-boto3-worklink (==1.17.86)"] -workmail = ["mypy-boto3-workmail (==1.17.86)"] -workmailmessageflow = ["mypy-boto3-workmailmessageflow (==1.17.86)"] -workspaces = ["mypy-boto3-workspaces (==1.17.86)"] -xray = ["mypy-boto3-xray (==1.17.86)"] +accessanalyzer = ["mypy-boto3-accessanalyzer (==1.17.103.post1)"] +acm = ["mypy-boto3-acm (==1.17.103.post1)"] +acm-pca = ["mypy-boto3-acm-pca (==1.17.103.post1)"] +alexaforbusiness = ["mypy-boto3-alexaforbusiness (==1.17.103.post1)"] +all = ["mypy-boto3-accessanalyzer (==1.17.103.post1)", "mypy-boto3-acm (==1.17.103.post1)", "mypy-boto3-acm-pca (==1.17.103.post1)", "mypy-boto3-alexaforbusiness (==1.17.103.post1)", "mypy-boto3-amp (==1.17.103.post1)", "mypy-boto3-amplify (==1.17.103.post1)", "mypy-boto3-amplifybackend (==1.17.103.post1)", "mypy-boto3-apigateway (==1.17.103.post1)", "mypy-boto3-apigatewaymanagementapi (==1.17.103.post1)", "mypy-boto3-apigatewayv2 (==1.17.103.post1)", "mypy-boto3-appconfig (==1.17.103.post1)", "mypy-boto3-appflow (==1.17.103.post1)", "mypy-boto3-appintegrations (==1.17.103.post1)", "mypy-boto3-application-autoscaling (==1.17.103.post1)", "mypy-boto3-application-insights (==1.17.103.post1)", "mypy-boto3-applicationcostprofiler (==1.17.103.post1)", "mypy-boto3-appmesh (==1.17.103.post1)", "mypy-boto3-apprunner (==1.17.103.post1)", "mypy-boto3-appstream (==1.17.103.post1)", "mypy-boto3-appsync (==1.17.103.post1)", "mypy-boto3-athena (==1.17.103.post1)", "mypy-boto3-auditmanager (==1.17.103.post1)", "mypy-boto3-autoscaling (==1.17.103.post1)", "mypy-boto3-autoscaling-plans (==1.17.103.post1)", "mypy-boto3-backup (==1.17.103.post1)", "mypy-boto3-batch (==1.17.103.post1)", "mypy-boto3-braket (==1.17.103.post1)", "mypy-boto3-budgets (==1.17.103.post1)", "mypy-boto3-ce (==1.17.103.post1)", "mypy-boto3-chime (==1.17.103.post1)", "mypy-boto3-cloud9 (==1.17.103.post1)", "mypy-boto3-clouddirectory (==1.17.103.post1)", "mypy-boto3-cloudformation (==1.17.103.post1)", "mypy-boto3-cloudfront (==1.17.103.post1)", "mypy-boto3-cloudhsm (==1.17.103.post1)", "mypy-boto3-cloudhsmv2 (==1.17.103.post1)", "mypy-boto3-cloudsearch (==1.17.103.post1)", "mypy-boto3-cloudsearchdomain (==1.17.103.post1)", "mypy-boto3-cloudtrail (==1.17.103.post1)", "mypy-boto3-cloudwatch (==1.17.103.post1)", "mypy-boto3-codeartifact (==1.17.103.post1)", "mypy-boto3-codebuild (==1.17.103.post1)", "mypy-boto3-codecommit (==1.17.103.post1)", "mypy-boto3-codedeploy (==1.17.103.post1)", "mypy-boto3-codeguru-reviewer (==1.17.103.post1)", "mypy-boto3-codeguruprofiler (==1.17.103.post1)", "mypy-boto3-codepipeline (==1.17.103.post1)", "mypy-boto3-codestar (==1.17.103.post1)", "mypy-boto3-codestar-connections (==1.17.103.post1)", "mypy-boto3-codestar-notifications (==1.17.103.post1)", "mypy-boto3-cognito-identity (==1.17.103.post1)", "mypy-boto3-cognito-idp (==1.17.103.post1)", "mypy-boto3-cognito-sync (==1.17.103.post1)", "mypy-boto3-comprehend (==1.17.103.post1)", "mypy-boto3-comprehendmedical (==1.17.103.post1)", "mypy-boto3-compute-optimizer (==1.17.103.post1)", "mypy-boto3-config (==1.17.103.post1)", "mypy-boto3-connect (==1.17.103.post1)", "mypy-boto3-connect-contact-lens (==1.17.103.post1)", "mypy-boto3-connectparticipant (==1.17.103.post1)", "mypy-boto3-cur (==1.17.103.post1)", "mypy-boto3-customer-profiles (==1.17.103.post1)", "mypy-boto3-databrew (==1.17.103.post1)", "mypy-boto3-dataexchange (==1.17.103.post1)", "mypy-boto3-datapipeline (==1.17.103.post1)", "mypy-boto3-datasync (==1.17.103.post1)", "mypy-boto3-dax (==1.17.103.post1)", "mypy-boto3-detective (==1.17.103.post1)", "mypy-boto3-devicefarm (==1.17.103.post1)", "mypy-boto3-devops-guru (==1.17.103.post1)", "mypy-boto3-directconnect (==1.17.103.post1)", "mypy-boto3-discovery (==1.17.103.post1)", "mypy-boto3-dlm (==1.17.103.post1)", "mypy-boto3-dms (==1.17.103.post1)", "mypy-boto3-docdb (==1.17.103.post1)", "mypy-boto3-ds (==1.17.103.post1)", "mypy-boto3-dynamodb (==1.17.103.post1)", "mypy-boto3-dynamodbstreams (==1.17.103.post1)", "mypy-boto3-ebs (==1.17.103.post1)", "mypy-boto3-ec2 (==1.17.103.post1)", "mypy-boto3-ec2-instance-connect (==1.17.103.post1)", "mypy-boto3-ecr (==1.17.103.post1)", "mypy-boto3-ecr-public (==1.17.103.post1)", "mypy-boto3-ecs (==1.17.103.post1)", "mypy-boto3-efs (==1.17.103.post1)", "mypy-boto3-eks (==1.17.103.post1)", "mypy-boto3-elastic-inference (==1.17.103.post1)", "mypy-boto3-elasticache (==1.17.103.post1)", "mypy-boto3-elasticbeanstalk (==1.17.103.post1)", "mypy-boto3-elastictranscoder (==1.17.103.post1)", "mypy-boto3-elb (==1.17.103.post1)", "mypy-boto3-elbv2 (==1.17.103.post1)", "mypy-boto3-emr (==1.17.103.post1)", "mypy-boto3-emr-containers (==1.17.103.post1)", "mypy-boto3-es (==1.17.103.post1)", "mypy-boto3-events (==1.17.103.post1)", "mypy-boto3-finspace (==1.17.103.post1)", "mypy-boto3-finspace-data (==1.17.103.post1)", "mypy-boto3-firehose (==1.17.103.post1)", "mypy-boto3-fis (==1.17.103.post1)", "mypy-boto3-fms (==1.17.103.post1)", "mypy-boto3-forecast (==1.17.103.post1)", "mypy-boto3-forecastquery (==1.17.103.post1)", "mypy-boto3-frauddetector (==1.17.103.post1)", "mypy-boto3-fsx (==1.17.103.post1)", "mypy-boto3-gamelift (==1.17.103.post1)", "mypy-boto3-glacier (==1.17.103.post1)", "mypy-boto3-globalaccelerator (==1.17.103.post1)", "mypy-boto3-glue (==1.17.103.post1)", "mypy-boto3-greengrass (==1.17.103.post1)", "mypy-boto3-greengrassv2 (==1.17.103.post1)", "mypy-boto3-groundstation (==1.17.103.post1)", "mypy-boto3-guardduty (==1.17.103.post1)", "mypy-boto3-health (==1.17.103.post1)", "mypy-boto3-healthlake (==1.17.103.post1)", "mypy-boto3-honeycode (==1.17.103.post1)", "mypy-boto3-iam (==1.17.103.post1)", "mypy-boto3-identitystore (==1.17.103.post1)", "mypy-boto3-imagebuilder (==1.17.103.post1)", "mypy-boto3-importexport (==1.17.103.post1)", "mypy-boto3-inspector (==1.17.103.post1)", "mypy-boto3-iot (==1.17.103.post1)", "mypy-boto3-iot-data (==1.17.103.post1)", "mypy-boto3-iot-jobs-data (==1.17.103.post1)", "mypy-boto3-iot1click-devices (==1.17.103.post1)", "mypy-boto3-iot1click-projects (==1.17.103.post1)", "mypy-boto3-iotanalytics (==1.17.103.post1)", "mypy-boto3-iotdeviceadvisor (==1.17.103.post1)", "mypy-boto3-iotevents (==1.17.103.post1)", "mypy-boto3-iotevents-data (==1.17.103.post1)", "mypy-boto3-iotfleethub (==1.17.103.post1)", "mypy-boto3-iotsecuretunneling (==1.17.103.post1)", "mypy-boto3-iotsitewise (==1.17.103.post1)", "mypy-boto3-iotthingsgraph (==1.17.103.post1)", "mypy-boto3-iotwireless (==1.17.103.post1)", "mypy-boto3-ivs (==1.17.103.post1)", "mypy-boto3-kafka (==1.17.103.post1)", "mypy-boto3-kendra (==1.17.103.post1)", "mypy-boto3-kinesis (==1.17.103.post1)", "mypy-boto3-kinesis-video-archived-media (==1.17.103.post1)", "mypy-boto3-kinesis-video-media (==1.17.103.post1)", "mypy-boto3-kinesis-video-signaling (==1.17.103.post1)", "mypy-boto3-kinesisanalytics (==1.17.103.post1)", "mypy-boto3-kinesisanalyticsv2 (==1.17.103.post1)", "mypy-boto3-kinesisvideo (==1.17.103.post1)", "mypy-boto3-kms (==1.17.103.post1)", "mypy-boto3-lakeformation (==1.17.103.post1)", "mypy-boto3-lambda (==1.17.103.post1)", "mypy-boto3-lex-models (==1.17.103.post1)", "mypy-boto3-lex-runtime (==1.17.103.post1)", "mypy-boto3-lexv2-models (==1.17.103.post1)", "mypy-boto3-lexv2-runtime (==1.17.103.post1)", "mypy-boto3-license-manager (==1.17.103.post1)", "mypy-boto3-lightsail (==1.17.103.post1)", "mypy-boto3-location (==1.17.103.post1)", "mypy-boto3-logs (==1.17.103.post1)", "mypy-boto3-lookoutequipment (==1.17.103.post1)", "mypy-boto3-lookoutmetrics (==1.17.103.post1)", "mypy-boto3-lookoutvision (==1.17.103.post1)", "mypy-boto3-machinelearning (==1.17.103.post1)", "mypy-boto3-macie (==1.17.103.post1)", "mypy-boto3-macie2 (==1.17.103.post1)", "mypy-boto3-managedblockchain (==1.17.103.post1)", "mypy-boto3-marketplace-catalog (==1.17.103.post1)", "mypy-boto3-marketplace-entitlement (==1.17.103.post1)", "mypy-boto3-marketplacecommerceanalytics (==1.17.103.post1)", "mypy-boto3-mediaconnect (==1.17.103.post1)", "mypy-boto3-mediaconvert (==1.17.103.post1)", "mypy-boto3-medialive (==1.17.103.post1)", "mypy-boto3-mediapackage (==1.17.103.post1)", "mypy-boto3-mediapackage-vod (==1.17.103.post1)", "mypy-boto3-mediastore (==1.17.103.post1)", "mypy-boto3-mediastore-data (==1.17.103.post1)", "mypy-boto3-mediatailor (==1.17.103.post1)", "mypy-boto3-meteringmarketplace (==1.17.103.post1)", "mypy-boto3-mgh (==1.17.103.post1)", "mypy-boto3-mgn (==1.17.103.post1)", "mypy-boto3-migrationhub-config (==1.17.103.post1)", "mypy-boto3-mobile (==1.17.103.post1)", "mypy-boto3-mq (==1.17.103.post1)", "mypy-boto3-mturk (==1.17.103.post1)", "mypy-boto3-mwaa (==1.17.103.post1)", "mypy-boto3-neptune (==1.17.103.post1)", "mypy-boto3-network-firewall (==1.17.103.post1)", "mypy-boto3-networkmanager (==1.17.103.post1)", "mypy-boto3-nimble (==1.17.103.post1)", "mypy-boto3-opsworks (==1.17.103.post1)", "mypy-boto3-opsworkscm (==1.17.103.post1)", "mypy-boto3-organizations (==1.17.103.post1)", "mypy-boto3-outposts (==1.17.103.post1)", "mypy-boto3-personalize (==1.17.103.post1)", "mypy-boto3-personalize-events (==1.17.103.post1)", "mypy-boto3-personalize-runtime (==1.17.103.post1)", "mypy-boto3-pi (==1.17.103.post1)", "mypy-boto3-pinpoint (==1.17.103.post1)", "mypy-boto3-pinpoint-email (==1.17.103.post1)", "mypy-boto3-pinpoint-sms-voice (==1.17.103.post1)", "mypy-boto3-polly (==1.17.103.post1)", "mypy-boto3-pricing (==1.17.103.post1)", "mypy-boto3-proton (==1.17.103.post1)", "mypy-boto3-qldb (==1.17.103.post1)", "mypy-boto3-qldb-session (==1.17.103.post1)", "mypy-boto3-quicksight (==1.17.103.post1)", "mypy-boto3-ram (==1.17.103.post1)", "mypy-boto3-rds (==1.17.103.post1)", "mypy-boto3-rds-data (==1.17.103.post1)", "mypy-boto3-redshift (==1.17.103.post1)", "mypy-boto3-redshift-data (==1.17.103.post1)", "mypy-boto3-rekognition (==1.17.103.post1)", "mypy-boto3-resource-groups (==1.17.103.post1)", "mypy-boto3-resourcegroupstaggingapi (==1.17.103.post1)", "mypy-boto3-robomaker (==1.17.103.post1)", "mypy-boto3-route53 (==1.17.103.post1)", "mypy-boto3-route53domains (==1.17.103.post1)", "mypy-boto3-route53resolver (==1.17.103.post1)", "mypy-boto3-s3 (==1.17.103.post1)", "mypy-boto3-s3control (==1.17.103.post1)", "mypy-boto3-s3outposts (==1.17.103.post1)", "mypy-boto3-sagemaker (==1.17.103.post1)", "mypy-boto3-sagemaker-a2i-runtime (==1.17.103.post1)", "mypy-boto3-sagemaker-edge (==1.17.103.post1)", "mypy-boto3-sagemaker-featurestore-runtime (==1.17.103.post1)", "mypy-boto3-sagemaker-runtime (==1.17.103.post1)", "mypy-boto3-savingsplans (==1.17.103.post1)", "mypy-boto3-schemas (==1.17.103.post1)", "mypy-boto3-sdb (==1.17.103.post1)", "mypy-boto3-secretsmanager (==1.17.103.post1)", "mypy-boto3-securityhub (==1.17.103.post1)", "mypy-boto3-serverlessrepo (==1.17.103.post1)", "mypy-boto3-service-quotas (==1.17.103.post1)", "mypy-boto3-servicecatalog (==1.17.103.post1)", "mypy-boto3-servicecatalog-appregistry (==1.17.103.post1)", "mypy-boto3-servicediscovery (==1.17.103.post1)", "mypy-boto3-ses (==1.17.103.post1)", "mypy-boto3-sesv2 (==1.17.103.post1)", "mypy-boto3-shield (==1.17.103.post1)", "mypy-boto3-signer (==1.17.103.post1)", "mypy-boto3-sms (==1.17.103.post1)", "mypy-boto3-sms-voice (==1.17.103.post1)", "mypy-boto3-snowball (==1.17.103.post1)", "mypy-boto3-sns (==1.17.103.post1)", "mypy-boto3-sqs (==1.17.103.post1)", "mypy-boto3-ssm (==1.17.103.post1)", "mypy-boto3-ssm-contacts (==1.17.103.post1)", "mypy-boto3-ssm-incidents (==1.17.103.post1)", "mypy-boto3-sso (==1.17.103.post1)", "mypy-boto3-sso-admin (==1.17.103.post1)", "mypy-boto3-sso-oidc (==1.17.103.post1)", "mypy-boto3-stepfunctions (==1.17.103.post1)", "mypy-boto3-storagegateway (==1.17.103.post1)", "mypy-boto3-sts (==1.17.103.post1)", "mypy-boto3-support (==1.17.103.post1)", "mypy-boto3-swf (==1.17.103.post1)", "mypy-boto3-synthetics (==1.17.103.post1)", "mypy-boto3-textract (==1.17.103.post1)", "mypy-boto3-timestream-query (==1.17.103.post1)", "mypy-boto3-timestream-write (==1.17.103.post1)", "mypy-boto3-transcribe (==1.17.103.post1)", "mypy-boto3-transfer (==1.17.103.post1)", "mypy-boto3-translate (==1.17.103.post1)", "mypy-boto3-waf (==1.17.103.post1)", "mypy-boto3-waf-regional (==1.17.103.post1)", "mypy-boto3-wafv2 (==1.17.103.post1)", "mypy-boto3-wellarchitected (==1.17.103.post1)", "mypy-boto3-workdocs (==1.17.103.post1)", "mypy-boto3-worklink (==1.17.103.post1)", "mypy-boto3-workmail (==1.17.103.post1)", "mypy-boto3-workmailmessageflow (==1.17.103.post1)", "mypy-boto3-workspaces (==1.17.103.post1)", "mypy-boto3-xray (==1.17.103.post1)"] +amp = ["mypy-boto3-amp (==1.17.103.post1)"] +amplify = ["mypy-boto3-amplify (==1.17.103.post1)"] +amplifybackend = ["mypy-boto3-amplifybackend (==1.17.103.post1)"] +apigateway = ["mypy-boto3-apigateway (==1.17.103.post1)"] +apigatewaymanagementapi = ["mypy-boto3-apigatewaymanagementapi (==1.17.103.post1)"] +apigatewayv2 = ["mypy-boto3-apigatewayv2 (==1.17.103.post1)"] +appconfig = ["mypy-boto3-appconfig (==1.17.103.post1)"] +appflow = ["mypy-boto3-appflow (==1.17.103.post1)"] +appintegrations = ["mypy-boto3-appintegrations (==1.17.103.post1)"] +application-autoscaling = ["mypy-boto3-application-autoscaling (==1.17.103.post1)"] +application-insights = ["mypy-boto3-application-insights (==1.17.103.post1)"] +applicationcostprofiler = ["mypy-boto3-applicationcostprofiler (==1.17.103.post1)"] +appmesh = ["mypy-boto3-appmesh (==1.17.103.post1)"] +apprunner = ["mypy-boto3-apprunner (==1.17.103.post1)"] +appstream = ["mypy-boto3-appstream (==1.17.103.post1)"] +appsync = ["mypy-boto3-appsync (==1.17.103.post1)"] +athena = ["mypy-boto3-athena (==1.17.103.post1)"] +auditmanager = ["mypy-boto3-auditmanager (==1.17.103.post1)"] +autoscaling = ["mypy-boto3-autoscaling (==1.17.103.post1)"] +autoscaling-plans = ["mypy-boto3-autoscaling-plans (==1.17.103.post1)"] +backup = ["mypy-boto3-backup (==1.17.103.post1)"] +batch = ["mypy-boto3-batch (==1.17.103.post1)"] +braket = ["mypy-boto3-braket (==1.17.103.post1)"] +budgets = ["mypy-boto3-budgets (==1.17.103.post1)"] +ce = ["mypy-boto3-ce (==1.17.103.post1)"] +chime = ["mypy-boto3-chime (==1.17.103.post1)"] +cloud9 = ["mypy-boto3-cloud9 (==1.17.103.post1)"] +clouddirectory = ["mypy-boto3-clouddirectory (==1.17.103.post1)"] +cloudformation = ["mypy-boto3-cloudformation (==1.17.103.post1)"] +cloudfront = ["mypy-boto3-cloudfront (==1.17.103.post1)"] +cloudhsm = ["mypy-boto3-cloudhsm (==1.17.103.post1)"] +cloudhsmv2 = ["mypy-boto3-cloudhsmv2 (==1.17.103.post1)"] +cloudsearch = ["mypy-boto3-cloudsearch (==1.17.103.post1)"] +cloudsearchdomain = ["mypy-boto3-cloudsearchdomain (==1.17.103.post1)"] +cloudtrail = ["mypy-boto3-cloudtrail (==1.17.103.post1)"] +cloudwatch = ["mypy-boto3-cloudwatch (==1.17.103.post1)"] +codeartifact = ["mypy-boto3-codeartifact (==1.17.103.post1)"] +codebuild = ["mypy-boto3-codebuild (==1.17.103.post1)"] +codecommit = ["mypy-boto3-codecommit (==1.17.103.post1)"] +codedeploy = ["mypy-boto3-codedeploy (==1.17.103.post1)"] +codeguru-reviewer = ["mypy-boto3-codeguru-reviewer (==1.17.103.post1)"] +codeguruprofiler = ["mypy-boto3-codeguruprofiler (==1.17.103.post1)"] +codepipeline = ["mypy-boto3-codepipeline (==1.17.103.post1)"] +codestar = ["mypy-boto3-codestar (==1.17.103.post1)"] +codestar-connections = ["mypy-boto3-codestar-connections (==1.17.103.post1)"] +codestar-notifications = ["mypy-boto3-codestar-notifications (==1.17.103.post1)"] +cognito-identity = ["mypy-boto3-cognito-identity (==1.17.103.post1)"] +cognito-idp = ["mypy-boto3-cognito-idp (==1.17.103.post1)"] +cognito-sync = ["mypy-boto3-cognito-sync (==1.17.103.post1)"] +comprehend = ["mypy-boto3-comprehend (==1.17.103.post1)"] +comprehendmedical = ["mypy-boto3-comprehendmedical (==1.17.103.post1)"] +compute-optimizer = ["mypy-boto3-compute-optimizer (==1.17.103.post1)"] +config = ["mypy-boto3-config (==1.17.103.post1)"] +connect = ["mypy-boto3-connect (==1.17.103.post1)"] +connect-contact-lens = ["mypy-boto3-connect-contact-lens (==1.17.103.post1)"] +connectparticipant = ["mypy-boto3-connectparticipant (==1.17.103.post1)"] +cur = ["mypy-boto3-cur (==1.17.103.post1)"] +customer-profiles = ["mypy-boto3-customer-profiles (==1.17.103.post1)"] +databrew = ["mypy-boto3-databrew (==1.17.103.post1)"] +dataexchange = ["mypy-boto3-dataexchange (==1.17.103.post1)"] +datapipeline = ["mypy-boto3-datapipeline (==1.17.103.post1)"] +datasync = ["mypy-boto3-datasync (==1.17.103.post1)"] +dax = ["mypy-boto3-dax (==1.17.103.post1)"] +detective = ["mypy-boto3-detective (==1.17.103.post1)"] +devicefarm = ["mypy-boto3-devicefarm (==1.17.103.post1)"] +devops-guru = ["mypy-boto3-devops-guru (==1.17.103.post1)"] +directconnect = ["mypy-boto3-directconnect (==1.17.103.post1)"] +discovery = ["mypy-boto3-discovery (==1.17.103.post1)"] +dlm = ["mypy-boto3-dlm (==1.17.103.post1)"] +dms = ["mypy-boto3-dms (==1.17.103.post1)"] +docdb = ["mypy-boto3-docdb (==1.17.103.post1)"] +ds = ["mypy-boto3-ds (==1.17.103.post1)"] +dynamodb = ["mypy-boto3-dynamodb (==1.17.103.post1)"] +dynamodbstreams = ["mypy-boto3-dynamodbstreams (==1.17.103.post1)"] +ebs = ["mypy-boto3-ebs (==1.17.103.post1)"] +ec2 = ["mypy-boto3-ec2 (==1.17.103.post1)"] +ec2-instance-connect = ["mypy-boto3-ec2-instance-connect (==1.17.103.post1)"] +ecr = ["mypy-boto3-ecr (==1.17.103.post1)"] +ecr-public = ["mypy-boto3-ecr-public (==1.17.103.post1)"] +ecs = ["mypy-boto3-ecs (==1.17.103.post1)"] +efs = ["mypy-boto3-efs (==1.17.103.post1)"] +eks = ["mypy-boto3-eks (==1.17.103.post1)"] +elastic-inference = ["mypy-boto3-elastic-inference (==1.17.103.post1)"] +elasticache = ["mypy-boto3-elasticache (==1.17.103.post1)"] +elasticbeanstalk = ["mypy-boto3-elasticbeanstalk (==1.17.103.post1)"] +elastictranscoder = ["mypy-boto3-elastictranscoder (==1.17.103.post1)"] +elb = ["mypy-boto3-elb (==1.17.103.post1)"] +elbv2 = ["mypy-boto3-elbv2 (==1.17.103.post1)"] +emr = ["mypy-boto3-emr (==1.17.103.post1)"] +emr-containers = ["mypy-boto3-emr-containers (==1.17.103.post1)"] +es = ["mypy-boto3-es (==1.17.103.post1)"] +essential = ["mypy-boto3-cloudformation (==1.17.103.post1)", "mypy-boto3-dynamodb (==1.17.103.post1)", "mypy-boto3-ec2 (==1.17.103.post1)", "mypy-boto3-lambda (==1.17.103.post1)", "mypy-boto3-rds (==1.17.103.post1)", "mypy-boto3-s3 (==1.17.103.post1)", "mypy-boto3-sqs (==1.17.103.post1)"] +events = ["mypy-boto3-events (==1.17.103.post1)"] +finspace = ["mypy-boto3-finspace (==1.17.103.post1)"] +finspace-data = ["mypy-boto3-finspace-data (==1.17.103.post1)"] +firehose = ["mypy-boto3-firehose (==1.17.103.post1)"] +fis = ["mypy-boto3-fis (==1.17.103.post1)"] +fms = ["mypy-boto3-fms (==1.17.103.post1)"] +forecast = ["mypy-boto3-forecast (==1.17.103.post1)"] +forecastquery = ["mypy-boto3-forecastquery (==1.17.103.post1)"] +frauddetector = ["mypy-boto3-frauddetector (==1.17.103.post1)"] +fsx = ["mypy-boto3-fsx (==1.17.103.post1)"] +gamelift = ["mypy-boto3-gamelift (==1.17.103.post1)"] +glacier = ["mypy-boto3-glacier (==1.17.103.post1)"] +globalaccelerator = ["mypy-boto3-globalaccelerator (==1.17.103.post1)"] +glue = ["mypy-boto3-glue (==1.17.103.post1)"] +greengrass = ["mypy-boto3-greengrass (==1.17.103.post1)"] +greengrassv2 = ["mypy-boto3-greengrassv2 (==1.17.103.post1)"] +groundstation = ["mypy-boto3-groundstation (==1.17.103.post1)"] +guardduty = ["mypy-boto3-guardduty (==1.17.103.post1)"] +health = ["mypy-boto3-health (==1.17.103.post1)"] +healthlake = ["mypy-boto3-healthlake (==1.17.103.post1)"] +honeycode = ["mypy-boto3-honeycode (==1.17.103.post1)"] +iam = ["mypy-boto3-iam (==1.17.103.post1)"] +identitystore = ["mypy-boto3-identitystore (==1.17.103.post1)"] +imagebuilder = ["mypy-boto3-imagebuilder (==1.17.103.post1)"] +importexport = ["mypy-boto3-importexport (==1.17.103.post1)"] +inspector = ["mypy-boto3-inspector (==1.17.103.post1)"] +iot = ["mypy-boto3-iot (==1.17.103.post1)"] +iot-data = ["mypy-boto3-iot-data (==1.17.103.post1)"] +iot-jobs-data = ["mypy-boto3-iot-jobs-data (==1.17.103.post1)"] +iot1click-devices = ["mypy-boto3-iot1click-devices (==1.17.103.post1)"] +iot1click-projects = ["mypy-boto3-iot1click-projects (==1.17.103.post1)"] +iotanalytics = ["mypy-boto3-iotanalytics (==1.17.103.post1)"] +iotdeviceadvisor = ["mypy-boto3-iotdeviceadvisor (==1.17.103.post1)"] +iotevents = ["mypy-boto3-iotevents (==1.17.103.post1)"] +iotevents-data = ["mypy-boto3-iotevents-data (==1.17.103.post1)"] +iotfleethub = ["mypy-boto3-iotfleethub (==1.17.103.post1)"] +iotsecuretunneling = ["mypy-boto3-iotsecuretunneling (==1.17.103.post1)"] +iotsitewise = ["mypy-boto3-iotsitewise (==1.17.103.post1)"] +iotthingsgraph = ["mypy-boto3-iotthingsgraph (==1.17.103.post1)"] +iotwireless = ["mypy-boto3-iotwireless (==1.17.103.post1)"] +ivs = ["mypy-boto3-ivs (==1.17.103.post1)"] +kafka = ["mypy-boto3-kafka (==1.17.103.post1)"] +kendra = ["mypy-boto3-kendra (==1.17.103.post1)"] +kinesis = ["mypy-boto3-kinesis (==1.17.103.post1)"] +kinesis-video-archived-media = ["mypy-boto3-kinesis-video-archived-media (==1.17.103.post1)"] +kinesis-video-media = ["mypy-boto3-kinesis-video-media (==1.17.103.post1)"] +kinesis-video-signaling = ["mypy-boto3-kinesis-video-signaling (==1.17.103.post1)"] +kinesisanalytics = ["mypy-boto3-kinesisanalytics (==1.17.103.post1)"] +kinesisanalyticsv2 = ["mypy-boto3-kinesisanalyticsv2 (==1.17.103.post1)"] +kinesisvideo = ["mypy-boto3-kinesisvideo (==1.17.103.post1)"] +kms = ["mypy-boto3-kms (==1.17.103.post1)"] +lakeformation = ["mypy-boto3-lakeformation (==1.17.103.post1)"] +lambda = ["mypy-boto3-lambda (==1.17.103.post1)"] +lex-models = ["mypy-boto3-lex-models (==1.17.103.post1)"] +lex-runtime = ["mypy-boto3-lex-runtime (==1.17.103.post1)"] +lexv2-models = ["mypy-boto3-lexv2-models (==1.17.103.post1)"] +lexv2-runtime = ["mypy-boto3-lexv2-runtime (==1.17.103.post1)"] +license-manager = ["mypy-boto3-license-manager (==1.17.103.post1)"] +lightsail = ["mypy-boto3-lightsail (==1.17.103.post1)"] +location = ["mypy-boto3-location (==1.17.103.post1)"] +logs = ["mypy-boto3-logs (==1.17.103.post1)"] +lookoutequipment = ["mypy-boto3-lookoutequipment (==1.17.103.post1)"] +lookoutmetrics = ["mypy-boto3-lookoutmetrics (==1.17.103.post1)"] +lookoutvision = ["mypy-boto3-lookoutvision (==1.17.103.post1)"] +machinelearning = ["mypy-boto3-machinelearning (==1.17.103.post1)"] +macie = ["mypy-boto3-macie (==1.17.103.post1)"] +macie2 = ["mypy-boto3-macie2 (==1.17.103.post1)"] +managedblockchain = ["mypy-boto3-managedblockchain (==1.17.103.post1)"] +marketplace-catalog = ["mypy-boto3-marketplace-catalog (==1.17.103.post1)"] +marketplace-entitlement = ["mypy-boto3-marketplace-entitlement (==1.17.103.post1)"] +marketplacecommerceanalytics = ["mypy-boto3-marketplacecommerceanalytics (==1.17.103.post1)"] +mediaconnect = ["mypy-boto3-mediaconnect (==1.17.103.post1)"] +mediaconvert = ["mypy-boto3-mediaconvert (==1.17.103.post1)"] +medialive = ["mypy-boto3-medialive (==1.17.103.post1)"] +mediapackage = ["mypy-boto3-mediapackage (==1.17.103.post1)"] +mediapackage-vod = ["mypy-boto3-mediapackage-vod (==1.17.103.post1)"] +mediastore = ["mypy-boto3-mediastore (==1.17.103.post1)"] +mediastore-data = ["mypy-boto3-mediastore-data (==1.17.103.post1)"] +mediatailor = ["mypy-boto3-mediatailor (==1.17.103.post1)"] +meteringmarketplace = ["mypy-boto3-meteringmarketplace (==1.17.103.post1)"] +mgh = ["mypy-boto3-mgh (==1.17.103.post1)"] +mgn = ["mypy-boto3-mgn (==1.17.103.post1)"] +migrationhub-config = ["mypy-boto3-migrationhub-config (==1.17.103.post1)"] +mobile = ["mypy-boto3-mobile (==1.17.103.post1)"] +mq = ["mypy-boto3-mq (==1.17.103.post1)"] +mturk = ["mypy-boto3-mturk (==1.17.103.post1)"] +mwaa = ["mypy-boto3-mwaa (==1.17.103.post1)"] +neptune = ["mypy-boto3-neptune (==1.17.103.post1)"] +network-firewall = ["mypy-boto3-network-firewall (==1.17.103.post1)"] +networkmanager = ["mypy-boto3-networkmanager (==1.17.103.post1)"] +nimble = ["mypy-boto3-nimble (==1.17.103.post1)"] +opsworks = ["mypy-boto3-opsworks (==1.17.103.post1)"] +opsworkscm = ["mypy-boto3-opsworkscm (==1.17.103.post1)"] +organizations = ["mypy-boto3-organizations (==1.17.103.post1)"] +outposts = ["mypy-boto3-outposts (==1.17.103.post1)"] +personalize = ["mypy-boto3-personalize (==1.17.103.post1)"] +personalize-events = ["mypy-boto3-personalize-events (==1.17.103.post1)"] +personalize-runtime = ["mypy-boto3-personalize-runtime (==1.17.103.post1)"] +pi = ["mypy-boto3-pi (==1.17.103.post1)"] +pinpoint = ["mypy-boto3-pinpoint (==1.17.103.post1)"] +pinpoint-email = ["mypy-boto3-pinpoint-email (==1.17.103.post1)"] +pinpoint-sms-voice = ["mypy-boto3-pinpoint-sms-voice (==1.17.103.post1)"] +polly = ["mypy-boto3-polly (==1.17.103.post1)"] +pricing = ["mypy-boto3-pricing (==1.17.103.post1)"] +proton = ["mypy-boto3-proton (==1.17.103.post1)"] +qldb = ["mypy-boto3-qldb (==1.17.103.post1)"] +qldb-session = ["mypy-boto3-qldb-session (==1.17.103.post1)"] +quicksight = ["mypy-boto3-quicksight (==1.17.103.post1)"] +ram = ["mypy-boto3-ram (==1.17.103.post1)"] +rds = ["mypy-boto3-rds (==1.17.103.post1)"] +rds-data = ["mypy-boto3-rds-data (==1.17.103.post1)"] +redshift = ["mypy-boto3-redshift (==1.17.103.post1)"] +redshift-data = ["mypy-boto3-redshift-data (==1.17.103.post1)"] +rekognition = ["mypy-boto3-rekognition (==1.17.103.post1)"] +resource-groups = ["mypy-boto3-resource-groups (==1.17.103.post1)"] +resourcegroupstaggingapi = ["mypy-boto3-resourcegroupstaggingapi (==1.17.103.post1)"] +robomaker = ["mypy-boto3-robomaker (==1.17.103.post1)"] +route53 = ["mypy-boto3-route53 (==1.17.103.post1)"] +route53domains = ["mypy-boto3-route53domains (==1.17.103.post1)"] +route53resolver = ["mypy-boto3-route53resolver (==1.17.103.post1)"] +s3 = ["mypy-boto3-s3 (==1.17.103.post1)"] +s3control = ["mypy-boto3-s3control (==1.17.103.post1)"] +s3outposts = ["mypy-boto3-s3outposts (==1.17.103.post1)"] +sagemaker = ["mypy-boto3-sagemaker (==1.17.103.post1)"] +sagemaker-a2i-runtime = ["mypy-boto3-sagemaker-a2i-runtime (==1.17.103.post1)"] +sagemaker-edge = ["mypy-boto3-sagemaker-edge (==1.17.103.post1)"] +sagemaker-featurestore-runtime = ["mypy-boto3-sagemaker-featurestore-runtime (==1.17.103.post1)"] +sagemaker-runtime = ["mypy-boto3-sagemaker-runtime (==1.17.103.post1)"] +savingsplans = ["mypy-boto3-savingsplans (==1.17.103.post1)"] +schemas = ["mypy-boto3-schemas (==1.17.103.post1)"] +sdb = ["mypy-boto3-sdb (==1.17.103.post1)"] +secretsmanager = ["mypy-boto3-secretsmanager (==1.17.103.post1)"] +securityhub = ["mypy-boto3-securityhub (==1.17.103.post1)"] +serverlessrepo = ["mypy-boto3-serverlessrepo (==1.17.103.post1)"] +service-quotas = ["mypy-boto3-service-quotas (==1.17.103.post1)"] +servicecatalog = ["mypy-boto3-servicecatalog (==1.17.103.post1)"] +servicecatalog-appregistry = ["mypy-boto3-servicecatalog-appregistry (==1.17.103.post1)"] +servicediscovery = ["mypy-boto3-servicediscovery (==1.17.103.post1)"] +ses = ["mypy-boto3-ses (==1.17.103.post1)"] +sesv2 = ["mypy-boto3-sesv2 (==1.17.103.post1)"] +shield = ["mypy-boto3-shield (==1.17.103.post1)"] +signer = ["mypy-boto3-signer (==1.17.103.post1)"] +sms = ["mypy-boto3-sms (==1.17.103.post1)"] +sms-voice = ["mypy-boto3-sms-voice (==1.17.103.post1)"] +snowball = ["mypy-boto3-snowball (==1.17.103.post1)"] +sns = ["mypy-boto3-sns (==1.17.103.post1)"] +sqs = ["mypy-boto3-sqs (==1.17.103.post1)"] +ssm = ["mypy-boto3-ssm (==1.17.103.post1)"] +ssm-contacts = ["mypy-boto3-ssm-contacts (==1.17.103.post1)"] +ssm-incidents = ["mypy-boto3-ssm-incidents (==1.17.103.post1)"] +sso = ["mypy-boto3-sso (==1.17.103.post1)"] +sso-admin = ["mypy-boto3-sso-admin (==1.17.103.post1)"] +sso-oidc = ["mypy-boto3-sso-oidc (==1.17.103.post1)"] +stepfunctions = ["mypy-boto3-stepfunctions (==1.17.103.post1)"] +storagegateway = ["mypy-boto3-storagegateway (==1.17.103.post1)"] +sts = ["mypy-boto3-sts (==1.17.103.post1)"] +support = ["mypy-boto3-support (==1.17.103.post1)"] +swf = ["mypy-boto3-swf (==1.17.103.post1)"] +synthetics = ["mypy-boto3-synthetics (==1.17.103.post1)"] +textract = ["mypy-boto3-textract (==1.17.103.post1)"] +timestream-query = ["mypy-boto3-timestream-query (==1.17.103.post1)"] +timestream-write = ["mypy-boto3-timestream-write (==1.17.103.post1)"] +transcribe = ["mypy-boto3-transcribe (==1.17.103.post1)"] +transfer = ["mypy-boto3-transfer (==1.17.103.post1)"] +translate = ["mypy-boto3-translate (==1.17.103.post1)"] +waf = ["mypy-boto3-waf (==1.17.103.post1)"] +waf-regional = ["mypy-boto3-waf-regional (==1.17.103.post1)"] +wafv2 = ["mypy-boto3-wafv2 (==1.17.103.post1)"] +wellarchitected = ["mypy-boto3-wellarchitected (==1.17.103.post1)"] +workdocs = ["mypy-boto3-workdocs (==1.17.103.post1)"] +worklink = ["mypy-boto3-worklink (==1.17.103.post1)"] +workmail = ["mypy-boto3-workmail (==1.17.103.post1)"] +workmailmessageflow = ["mypy-boto3-workmailmessageflow (==1.17.103.post1)"] +workspaces = ["mypy-boto3-workspaces (==1.17.103.post1)"] +xray = ["mypy-boto3-xray (==1.17.103.post1)"] [[package]] name = "botocore" -version = "1.20.86" +version = "1.20.103" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -402,7 +404,18 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.11.15)"] +crt = ["awscrt (==0.11.24)"] + +[[package]] +name = "botocore-stubs" +version = "1.20.103.post1" +description = "Type annotations for botocore 1.20.103, generated by mypy-boto3-buider 4.22.1" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "cached-property" @@ -537,7 +550,7 @@ python-versions = "*" [[package]] name = "dcicsnovault" -version = "4.7.6" +version = "4.8.0" description = "Storage support for 4DN Data Portals." category = "main" optional = false @@ -774,11 +787,11 @@ smmap = ">=3.0.1,<5" [[package]] name = "gitpython" -version = "3.1.17" +version = "3.1.18" description = "Python Git Library" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.dependencies] gitdb = ">=4.0.1,<5" @@ -853,7 +866,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.4.0" +version = "4.6.0" description = "Read metadata from Python packages" category = "dev" optional = false @@ -865,11 +878,12 @@ zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +perf = ["ipython"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" -version = "5.1.4" +version = "5.2.0" description = "Read resources from Python packages" category = "main" optional = false @@ -1141,7 +1155,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "pip-licenses" -version = "3.3.1" +version = "3.4.0" description = "Dump the software license list of Python packages installed with pip." category = "dev" optional = false @@ -1218,19 +1232,19 @@ test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] [[package]] name = "psycopg2" -version = "2.8.6" +version = "2.9.1" description = "psycopg2 - Python-PostgreSQL Database Adapter" category = "main" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = ">=3.6" [[package]] name = "psycopg2-binary" -version = "2.8.6" +version = "2.9.1" description = "psycopg2 - Python-PostgreSQL Database Adapter" category = "main" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = ">=3.6" [[package]] name = "ptable" @@ -1854,7 +1868,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "tqdm" -version = "4.61.0" +version = "4.61.1" description = "Fast, Extensible Progress Meter" category = "main" optional = false @@ -1907,7 +1921,7 @@ python-versions = "*" [[package]] name = "urllib3" -version = "1.26.5" +version = "1.26.6" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false @@ -1956,7 +1970,7 @@ testing = ["pytest (>=3.1.0)", "coverage", "pytest-cov", "pytest-xdist"] [[package]] name = "websocket-client" -version = "1.0.1" +version = "1.1.0" description = "WebSocket client for Python with low level API options" category = "main" optional = false @@ -2117,7 +2131,7 @@ beautifulsoup4 = [ {file = "beautifulsoup4-4.9.3.tar.gz", hash = "sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25"}, ] bitarray = [ - {file = "bitarray-2.1.0.tar.gz", hash = "sha256:97224a19325ecee49a3bf4df3ee0531d3af9cf288b67d089a7ef44a3c4ea3839"}, + {file = "bitarray-2.1.3.tar.gz", hash = "sha256:a24aff72a7f1b09571b5daf9dbfcffd98481be1fe085ae5ef662cf11452a97e0"}, ] boto = [ {file = "boto-2.49.0-py2.py3-none-any.whl", hash = "sha256:147758d41ae7240dc989f0039f27da8ca0d53734be0eb869ef16e3adcfa462e8"}, @@ -2128,12 +2142,16 @@ boto3 = [ {file = "boto3-1.17.53.tar.gz", hash = "sha256:1d26f6e7ae3c940cb07119077ac42485dcf99164350da0ab50d0f5ad345800cd"}, ] boto3-stubs = [ - {file = "boto3-stubs-1.17.86.tar.gz", hash = "sha256:5006bc85b85a27c67e3861bb19980199ccdf9398d517f6720efca6931661be7d"}, - {file = "boto3_stubs-1.17.86-py3-none-any.whl", hash = "sha256:c5a35d146954f1901f3d69f027bf716d5ac7f8401c69e67c851185840cd8fa6d"}, + {file = "boto3-stubs-1.17.103.post1.tar.gz", hash = "sha256:715ce7c1e5e1468d90d6633e2a8847ceea160c628fdcf0f9566e61596fd701d8"}, + {file = "boto3_stubs-1.17.103.post1-py3-none-any.whl", hash = "sha256:9dfc04e7a35ecad684e40e0f3357d485c5db2958fc09e4765fa3e556b3734b1d"}, ] botocore = [ - {file = "botocore-1.20.86-py2.py3-none-any.whl", hash = "sha256:2a48154fd7d61a67d861b0781e204918508aa8af094391f03ad4047c979dc9c7"}, - {file = "botocore-1.20.86.tar.gz", hash = "sha256:bbdfd2adedb0cc9117cf411ef51cbd8fc19798e21e414f831ad9781e507ff1da"}, + {file = "botocore-1.20.103-py2.py3-none-any.whl", hash = "sha256:5b39773056a94f85e884a658a5126bb4fee957e31d98b69c255b137eb9f11d6b"}, + {file = "botocore-1.20.103.tar.gz", hash = "sha256:afbfe10fcd580224016d652330db21e7d89099181a437c9ec588b5b7cb3ea644"}, +] +botocore-stubs = [ + {file = "botocore-stubs-1.20.103.post1.tar.gz", hash = "sha256:d66554becc1e44572e197f769883214382d79cf24d5fa3e6670fddf13f3506a4"}, + {file = "botocore_stubs-1.20.103.post1-py3-none-any.whl", hash = "sha256:52b605546ba546c9c72572a11c0a307a25a65d33c42e03fa20dc97bde8d8c71b"}, ] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, @@ -2289,8 +2307,8 @@ dcicpyvcf = [ {file = "dcicpyvcf-1.0.0.tar.gz", hash = "sha256:c5bf8d585002ab3b95d13a47803376b456b931865e4189c38a18cca47b108449"}, ] dcicsnovault = [ - {file = "dcicsnovault-4.7.6-py3-none-any.whl", hash = "sha256:0ff0c37ba9201dff7f3a778f5feb2acfd8eb22f68ebbbf1e579cf6e6b664dc8e"}, - {file = "dcicsnovault-4.7.6.tar.gz", hash = "sha256:4e2a3f043b4e4632053bc7b553a2ce67c5a501de3f6af096efda3506998642ad"}, + {file = "dcicsnovault-4.8.0-py3-none-any.whl", hash = "sha256:18c259f873a5e935e5aaadc05b54f76839989b02afb8be58b9c490a0490aeedc"}, + {file = "dcicsnovault-4.8.0.tar.gz", hash = "sha256:d77c65a65fbe75076fe4d856c08dc5affbfc314aec17f83a3176460957dfe1e1"}, ] dcicutils = [ {file = "dcicutils-1.15.0-py3-none-any.whl", hash = "sha256:1ad2ce8cdae57e42fee5506669af24dc2c181a3188dd07743aba93a87024d04c"}, @@ -2348,8 +2366,8 @@ gitdb = [ {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"}, ] gitpython = [ - {file = "GitPython-3.1.17-py3-none-any.whl", hash = "sha256:29fe82050709760081f588dd50ce83504feddbebdc4da6956d02351552b1c135"}, - {file = "GitPython-3.1.17.tar.gz", hash = "sha256:ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e"}, + {file = "GitPython-3.1.18-py3-none-any.whl", hash = "sha256:fce760879cd2aebd2991b3542876dc5c4a909b30c9d69dfc488e504a8db37ee8"}, + {file = "GitPython-3.1.18.tar.gz", hash = "sha256:b838a895977b45ab6f0cc926a9045c8d1c44e2b653c1fcc39fe91f42c6e8f05b"}, ] granite-suite = [ {file = "granite-suite-0.1.11b0.tar.gz", hash = "sha256:8d5b893ff8658d42cd16e7b2013c2456dad6216aa836fea45767bee07a9aaf97"}, @@ -2387,12 +2405,12 @@ idna = [ {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.4.0-py3-none-any.whl", hash = "sha256:960d52ba7c21377c990412aca380bf3642d734c2eaab78a2c39319f67c6a5786"}, - {file = "importlib_metadata-4.4.0.tar.gz", hash = "sha256:e592faad8de1bda9fe920cf41e15261e7131bcf266c30306eec00e8e225c1dd5"}, + {file = "importlib_metadata-4.6.0-py3-none-any.whl", hash = "sha256:c6513572926a96458f8c8f725bf0e00108fba0c9583ade9bd15b869c9d726e33"}, + {file = "importlib_metadata-4.6.0.tar.gz", hash = "sha256:4a5611fea3768d3d967c447ab4e93f567d95db92225b43b7b238dbfb855d70bb"}, ] importlib-resources = [ - {file = "importlib_resources-5.1.4-py3-none-any.whl", hash = "sha256:e962bff7440364183203d179d7ae9ad90cb1f2b74dcb84300e88ecc42dca3351"}, - {file = "importlib_resources-5.1.4.tar.gz", hash = "sha256:54161657e8ffc76596c4ede7080ca68cb02962a2e074a2586b695a93a925d36e"}, + {file = "importlib_resources-5.2.0-py3-none-any.whl", hash = "sha256:a0143290bef3cbc99de9e40176e4987780939a955b8632f02ce6c935f42e9bfc"}, + {file = "importlib_resources-5.2.0.tar.gz", hash = "sha256:22a2c42d8c6a1d30aa8a0e1f57293725bfd5c013d562585e46aff469e0ff78b3"}, ] isodate = [ {file = "isodate-0.5.4.tar.gz", hash = "sha256:42105c41d037246dc1987e36d96f3752ffd5c0c24834dd12e4fdbe1e79544e31"}, @@ -2593,8 +2611,8 @@ pillow = [ {file = "Pillow-6.2.2.tar.gz", hash = "sha256:db9ff0c251ed066d367f53b64827cc9e18ccea001b986d08c265e53625dab950"}, ] pip-licenses = [ - {file = "pip-licenses-3.3.1.tar.gz", hash = "sha256:2836557dbceba1686b58443d823a623de75bb9922ec507288e3778cc617c00af"}, - {file = "pip_licenses-3.3.1-py3-none-any.whl", hash = "sha256:ec2a96fc180328f0b19586a000f77923645a6858c0340e9a06c81b77a6f6379f"}, + {file = "pip-licenses-3.4.0.tar.gz", hash = "sha256:c5e48b312bdd296154daaf04f24f473715a3c77b2c359f3737377b9fb31aaf8c"}, + {file = "pip_licenses-3.4.0-py3-none-any.whl", hash = "sha256:bdebcc46c5972a5dc7ee0ef5c6cf6a1bc5d63d7466e23325fc4090b33cc58c00"}, ] pipdeptree = [ {file = "pipdeptree-2.0.0-py2-none-any.whl", hash = "sha256:6899ba160bc7db98f0124d1aa6a680aa578adbac8558177ae66dd81bf69369de"}, @@ -2644,58 +2662,46 @@ psutil = [ {file = "psutil-5.8.0.tar.gz", hash = "sha256:0c9ccb99ab76025f2f0bbecf341d4656e9c1351db8cc8a03ccd62e318ab4b5c6"}, ] psycopg2 = [ - {file = "psycopg2-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:068115e13c70dc5982dfc00c5d70437fe37c014c808acce119b5448361c03725"}, - {file = "psycopg2-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:d160744652e81c80627a909a0e808f3c6653a40af435744de037e3172cf277f5"}, - {file = "psycopg2-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:b8cae8b2f022efa1f011cc753adb9cbadfa5a184431d09b273fb49b4167561ad"}, - {file = "psycopg2-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:f22ea9b67aea4f4a1718300908a2fb62b3e4276cf00bd829a97ab5894af42ea3"}, - {file = "psycopg2-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:26e7fd115a6db75267b325de0fba089b911a4a12ebd3d0b5e7acb7028bc46821"}, - {file = "psycopg2-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:00195b5f6832dbf2876b8bf77f12bdce648224c89c880719c745b90515233301"}, - {file = "psycopg2-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a49833abfdede8985ba3f3ec641f771cca215479f41523e99dace96d5b8cce2a"}, - {file = "psycopg2-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:f974c96fca34ae9e4f49839ba6b78addf0346777b46c4da27a7bf54f48d3057d"}, - {file = "psycopg2-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:6a3d9efb6f36f1fe6aa8dbb5af55e067db802502c55a9defa47c5a1dad41df84"}, - {file = "psycopg2-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:56fee7f818d032f802b8eed81ef0c1232b8b42390df189cab9cfa87573fe52c5"}, - {file = "psycopg2-2.8.6-cp38-cp38-win32.whl", hash = "sha256:ad2fe8a37be669082e61fb001c185ffb58867fdbb3e7a6b0b0d2ffe232353a3e"}, - {file = "psycopg2-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:56007a226b8e95aa980ada7abdea6b40b75ce62a433bd27cec7a8178d57f4051"}, - {file = "psycopg2-2.8.6-cp39-cp39-win32.whl", hash = "sha256:2c93d4d16933fea5bbacbe1aaf8fa8c1348740b2e50b3735d1b0bf8154cbf0f3"}, - {file = "psycopg2-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:d5062ae50b222da28253059880a871dc87e099c25cb68acf613d9d227413d6f7"}, - {file = "psycopg2-2.8.6.tar.gz", hash = "sha256:fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"}, + {file = "psycopg2-2.9.1-cp36-cp36m-win32.whl", hash = "sha256:7f91312f065df517187134cce8e395ab37f5b601a42446bdc0f0d51773621854"}, + {file = "psycopg2-2.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:830c8e8dddab6b6716a4bf73a09910c7954a92f40cf1d1e702fb93c8a919cc56"}, + {file = "psycopg2-2.9.1-cp37-cp37m-win32.whl", hash = "sha256:89409d369f4882c47f7ea20c42c5046879ce22c1e4ea20ef3b00a4dfc0a7f188"}, + {file = "psycopg2-2.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7640e1e4d72444ef012e275e7b53204d7fab341fb22bc76057ede22fe6860b25"}, + {file = "psycopg2-2.9.1-cp38-cp38-win32.whl", hash = "sha256:079d97fc22de90da1d370c90583659a9f9a6ee4007355f5825e5f1c70dffc1fa"}, + {file = "psycopg2-2.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:2c992196719fadda59f72d44603ee1a2fdcc67de097eea38d41c7ad9ad246e62"}, + {file = "psycopg2-2.9.1-cp39-cp39-win32.whl", hash = "sha256:2087013c159a73e09713294a44d0c8008204d06326006b7f652bef5ace66eebb"}, + {file = "psycopg2-2.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:bf35a25f1aaa8a3781195595577fcbb59934856ee46b4f252f56ad12b8043bcf"}, + {file = "psycopg2-2.9.1.tar.gz", hash = "sha256:de5303a6f1d0a7a34b9d40e4d3bef684ccc44a49bbe3eb85e3c0bffb4a131b7c"}, ] psycopg2-binary = [ - {file = "psycopg2-binary-2.8.6.tar.gz", hash = "sha256:11b9c0ebce097180129e422379b824ae21c8f2a6596b159c7659e2e5a00e1aa0"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d14b140a4439d816e3b1229a4a525df917d6ea22a0771a2a78332273fd9528a4"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1fabed9ea2acc4efe4671b92c669a213db744d2af8a9fc5d69a8e9bc14b7a9db"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f5ab93a2cb2d8338b1674be43b442a7f544a0971da062a5da774ed40587f18f5"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:b4afc542c0ac0db720cf516dd20c0846f71c248d2b3d21013aa0d4ef9c71ca25"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:e74a55f6bad0e7d3968399deb50f61f4db1926acf4a6d83beaaa7df986f48b1c"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:0deac2af1a587ae12836aa07970f5cb91964f05a7c6cdb69d8425ff4c15d4e2c"}, - {file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ad20d2eb875aaa1ea6d0f2916949f5c08a19c74d05b16ce6ebf6d24f2c9f75d1"}, - {file = "psycopg2_binary-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:950bc22bb56ee6ff142a2cb9ee980b571dd0912b0334aa3fe0fe3788d860bea2"}, - {file = "psycopg2_binary-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:b8a3715b3c4e604bcc94c90a825cd7f5635417453b253499664f784fc4da0152"}, - {file = "psycopg2_binary-2.8.6-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d1b4ab59e02d9008efe10ceabd0b31e79519da6fb67f7d8e8977118832d0f449"}, - {file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:ac0c682111fbf404525dfc0f18a8b5f11be52657d4f96e9fcb75daf4f3984859"}, - {file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7d92a09b788cbb1aec325af5fcba9fed7203897bbd9269d5691bb1e3bce29550"}, - {file = "psycopg2_binary-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:aaa4213c862f0ef00022751161df35804127b78adf4a2755b9f991a507e425fd"}, - {file = "psycopg2_binary-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:c2507d796fca339c8fb03216364cca68d87e037c1f774977c8fc377627d01c71"}, - {file = "psycopg2_binary-2.8.6-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ee69dad2c7155756ad114c02db06002f4cded41132cc51378e57aad79cc8e4f4"}, - {file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e82aba2188b9ba309fd8e271702bd0d0fc9148ae3150532bbb474f4590039ffb"}, - {file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d5227b229005a696cc67676e24c214740efd90b148de5733419ac9aaba3773da"}, - {file = "psycopg2_binary-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a0eb43a07386c3f1f1ebb4dc7aafb13f67188eab896e7397aa1ee95a9c884eb2"}, - {file = "psycopg2_binary-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:e1f57aa70d3f7cc6947fd88636a481638263ba04a742b4a37dd25c373e41491a"}, - {file = "psycopg2_binary-2.8.6-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:833709a5c66ca52f1d21d41865a637223b368c0ee76ea54ca5bad6f2526c7679"}, - {file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ba28584e6bca48c59eecbf7efb1576ca214b47f05194646b081717fa628dfddf"}, - {file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6a32f3a4cb2f6e1a0b15215f448e8ce2da192fd4ff35084d80d5e39da683e79b"}, - {file = "psycopg2_binary-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:0e4dc3d5996760104746e6cfcdb519d9d2cd27c738296525d5867ea695774e67"}, - {file = "psycopg2_binary-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:cec7e622ebc545dbb4564e483dd20e4e404da17ae07e06f3e780b2dacd5cee66"}, - {file = "psycopg2_binary-2.8.6-cp38-cp38-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ba381aec3a5dc29634f20692349d73f2d21f17653bda1decf0b52b11d694541f"}, - {file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a0c50db33c32594305b0ef9abc0cb7db13de7621d2cadf8392a1d9b3c437ef77"}, - {file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94"}, - {file = "psycopg2_binary-2.8.6-cp38-cp38-win32.whl", hash = "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729"}, - {file = "psycopg2_binary-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77"}, - {file = "psycopg2_binary-2.8.6-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83"}, - {file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52"}, - {file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd"}, - {file = "psycopg2_binary-2.8.6-cp39-cp39-win32.whl", hash = "sha256:6422f2ff0919fd720195f64ffd8f924c1395d30f9a495f31e2392c2efafb5056"}, - {file = "psycopg2_binary-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:15978a1fbd225583dd8cdaf37e67ccc278b5abecb4caf6b2d6b8e2b948e953f6"}, + {file = "psycopg2-binary-2.9.1.tar.gz", hash = "sha256:b0221ca5a9837e040ebf61f48899926b5783668b7807419e4adae8175a31f773"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:c250a7ec489b652c892e4f0a5d122cc14c3780f9f643e1a326754aedf82d9a76"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aef9aee84ec78af51107181d02fe8773b100b01c5dfde351184ad9223eab3698"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:123c3fb684e9abfc47218d3784c7b4c47c8587951ea4dd5bc38b6636ac57f616"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:995fc41ebda5a7a663a254a1dcac52638c3e847f48307b5416ee373da15075d7"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:fbb42a541b1093385a2d8c7eec94d26d30437d0e77c1d25dae1dcc46741a385e"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-win32.whl", hash = "sha256:20f1ab44d8c352074e2d7ca67dc00843067788791be373e67a0911998787ce7d"}, + {file = "psycopg2_binary-2.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f6fac64a38f6768e7bc7b035b9e10d8a538a9fadce06b983fb3e6fa55ac5f5ce"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:1e3a362790edc0a365385b1ac4cc0acc429a0c0d662d829a50b6ce743ae61b5a"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f8559617b1fcf59a9aedba2c9838b5b6aa211ffedecabca412b92a1ff75aac1a"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a36c7eb6152ba5467fb264d73844877be8b0847874d4822b7cf2d3c0cb8cdcb0"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:2f62c207d1740b0bde5c4e949f857b044818f734a3d57f1d0d0edc65050532ed"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:cfc523edecddaef56f6740d7de1ce24a2fdf94fd5e704091856a201872e37f9f"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-win32.whl", hash = "sha256:1e85b74cbbb3056e3656f1cc4781294df03383127a8114cbc6531e8b8367bf1e"}, + {file = "psycopg2_binary-2.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1473c0215b0613dd938db54a653f68251a45a78b05f6fc21af4326f40e8360a2"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:35c4310f8febe41f442d3c65066ca93cccefd75013df3d8c736c5b93ec288140"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c13d72ed6af7fd2c8acbd95661cf9477f94e381fce0792c04981a8283b52917"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14db1752acdd2187d99cb2ca0a1a6dfe57fc65c3281e0f20e597aac8d2a5bd90"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:aed4a9a7e3221b3e252c39d0bf794c438dc5453bc2963e8befe9d4cd324dff72"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:da113b70f6ec40e7d81b43d1b139b9db6a05727ab8be1ee559f3a69854a69d34"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-win32.whl", hash = "sha256:4235f9d5ddcab0b8dbd723dca56ea2922b485ea00e1dafacf33b0c7e840b3d32"}, + {file = "psycopg2_binary-2.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:988b47ac70d204aed01589ed342303da7c4d84b56c2f4c4b8b00deda123372bf"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:7360647ea04db2e7dff1648d1da825c8cf68dc5fbd80b8fb5b3ee9f068dcd21a"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca86db5b561b894f9e5f115d6a159fff2a2570a652e07889d8a383b5fae66eb4"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ced67f1e34e1a450cdb48eb53ca73b60aa0af21c46b9b35ac3e581cf9f00e31"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:0f2e04bd2a2ab54fa44ee67fe2d002bb90cee1c0f1cc0ebc3148af7b02034cbd"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:3242b9619de955ab44581a03a64bdd7d5e470cc4183e8fcadd85ab9d3756ce7a"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-win32.whl", hash = "sha256:0b7dae87f0b729922e06f85f667de7bf16455d411971b2043bbd9577af9d1975"}, + {file = "psycopg2_binary-2.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4d7679a08fea64573c969f6994a2631908bb2c0e69a7235648642f3d2e39a68"}, ] ptable = [ {file = "PTable-0.9.2.tar.gz", hash = "sha256:aa7fc151cb40f2dabcd2275ba6f7fd0ff8577a86be3365cd3fb297cbe09cc292"}, @@ -3005,8 +3011,8 @@ toml = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] tqdm = [ - {file = "tqdm-4.61.0-py2.py3-none-any.whl", hash = "sha256:736524215c690621b06fc89d0310a49822d75e599fcd0feb7cc742b98d692493"}, - {file = "tqdm-4.61.0.tar.gz", hash = "sha256:cd5791b5d7c3f2f1819efc81d36eb719a38e0906a7380365c556779f585ea042"}, + {file = "tqdm-4.61.1-py2.py3-none-any.whl", hash = "sha256:aa0c29f03f298951ac6318f7c8ce584e48fa22ec26396e6411e43d038243bdb2"}, + {file = "tqdm-4.61.1.tar.gz", hash = "sha256:24be966933e942be5f074c29755a95b315c69a91f839a29139bf26ffffe2d3fd"}, ] transaction = [ {file = "transaction-2.4.0-py2.py3-none-any.whl", hash = "sha256:b96a5e9aaa73f905759bc9ccf0021bf4864c01ac36666e0d28395e871f6d584a"}, @@ -3025,8 +3031,8 @@ uptime = [ {file = "uptime-3.0.1.tar.gz", hash = "sha256:7c300254775b807ce46e3dcbcda30aa3b9a204b9c57a7ac1e79ee6dbe3942973"}, ] urllib3 = [ - {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"}, - {file = "urllib3-1.26.5.tar.gz", hash = "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"}, + {file = "urllib3-1.26.6-py2.py3-none-any.whl", hash = "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4"}, + {file = "urllib3-1.26.6.tar.gz", hash = "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"}, ] venusian = [ {file = "venusian-1.2.0-py2.py3-none-any.whl", hash = "sha256:2f2d077a1eedc3fda40425f65687c8c494da7e83d7c23bc2c4d1a40eb3ca5b6d"}, @@ -3041,8 +3047,8 @@ webob = [ {file = "WebOb-1.8.7.tar.gz", hash = "sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"}, ] websocket-client = [ - {file = "websocket-client-1.0.1.tar.gz", hash = "sha256:3e2bf58191d4619b161389a95bdce84ce9e0b24eb8107e7e590db682c2d0ca81"}, - {file = "websocket_client-1.0.1-py2.py3-none-any.whl", hash = "sha256:abf306dc6351dcef07f4d40453037e51cc5d9da2ef60d0fc5d0fe3bcda255372"}, + {file = "websocket-client-1.1.0.tar.gz", hash = "sha256:b68e4959d704768fa20e35c9d508c8dc2bbc041fd8d267c0d7345cffe2824568"}, + {file = "websocket_client-1.1.0-py2.py3-none-any.whl", hash = "sha256:e5c333bfa9fa739538b652b6f8c8fc2559f1d364243c8a689d7c0e1d41c2e611"}, ] webtest = [ {file = "WebTest-2.0.35-py2.py3-none-any.whl", hash = "sha256:44ddfe99b5eca4cf07675e7222c81dd624d22f9a26035d2b93dc8862dc1153c6"}, From e6f96f62a9c3652827b18b06624e25891a543f8c Mon Sep 17 00:00:00 2001 From: Bianca Morris Date: Thu, 1 Jul 2021 16:48:33 -0400 Subject: [PATCH 22/28] revert vsl to dstore=db from api; fix comments --- .../CaseView/VariantSampleListController.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/encoded/static/components/item-pages/CaseView/VariantSampleListController.js b/src/encoded/static/components/item-pages/CaseView/VariantSampleListController.js index 0f7ff2c545..3bf2110f3f 100644 --- a/src/encoded/static/components/item-pages/CaseView/VariantSampleListController.js +++ b/src/encoded/static/components/item-pages/CaseView/VariantSampleListController.js @@ -8,7 +8,7 @@ import memoize from "memoize-one"; import { console, ajax } from '@hms-dbmi-bgm/shared-portal-components/es/components/util'; /** - * Holds embedded-ish representation of VariantSampleList Item (minus gene list stuff, basically) + * Holds datastore=database representation of VariantSampleList Item * Gets refreshed after saving/moving VariantSamples to InterpretationTab * and upon mount. */ @@ -68,7 +68,7 @@ export class VariantSampleListController extends React.PureComponent { } } - /** Fetches `@@embedded`-ish representation of 'state.variantSampleListID' from embed api */ + /** Fetches datastore=database representation of 'state.variantSampleListID'*/ fetchVariantSampleListItem(fnCallback = null){ const { variantSampleListID } = this.state; @@ -84,7 +84,7 @@ export class VariantSampleListController extends React.PureComponent { console.info("Fetching VariantSampleList ..."); const vslFetchCallback = (resp) => { console.info("Fetched VariantSampleList", resp); - const { 0: { "@id": vslID, error = null } = {} } = resp; + const { "@id": vslID, error = null } = resp; if (scopedRequest !== this.currentRequest) { // Request superseded, cancel it. @@ -101,7 +101,7 @@ export class VariantSampleListController extends React.PureComponent { this.setState(function({ refreshCount: prevRefreshCount, variantSampleListItem: prevItem }){ const { "@id": prevAtID = null } = prevItem || {}; const nextState = { - "variantSampleListItem": resp[0], + "variantSampleListItem": resp, "isLoadingVariantSampleListItem": false }; if (prevAtID && vslID !== prevAtID) { @@ -115,11 +115,10 @@ export class VariantSampleListController extends React.PureComponent { // Using embed API instead of datastore=database in order to prevent gene-list related slowdown this.setState({ "isLoadingVariantSampleListItem": true }, () => { scopedRequest = this.currentRequest = ajax.load( - '/embed', + variantSampleListID + "?datastore=database", vslFetchCallback, - "POST", - vslFetchCallback, - JSON.stringify({ ids: [variantSampleListID] }) + "GET", + vslFetchCallback ); }); } From e72a75f3b14bec2fd6c9e499a16050216afcc35d Mon Sep 17 00:00:00 2001 From: Bianca Morris Date: Thu, 1 Jul 2021 16:48:59 -0400 Subject: [PATCH 23/28] bump spc to 0.1.12 --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index edd1ec0132..fe9eee43af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1437,8 +1437,8 @@ } }, "@hms-dbmi-bgm/shared-portal-components": { - "version": "github:4dn-dcic/shared-portal-components#f918f47ebfdb8bcc631413129fc7a50763953072", - "from": "github:4dn-dcic/shared-portal-components#0.1.11b2", + "version": "github:4dn-dcic/shared-portal-components#30c7499acc80300990251c814fcc9194a1ba8351", + "from": "github:4dn-dcic/shared-portal-components#0.1.12", "requires": { "auth0-lock": "^11.26.3", "aws-sdk": "^2.745.0", @@ -3897,9 +3897,9 @@ } }, "aws-sdk": { - "version": "2.937.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.937.0.tgz", - "integrity": "sha512-Ko5fATHxfHWMVJjS5/7eNEeIZ0Sja3B5f7ZvdyGmyRdUv7JVeppkNmc6cK5jFt/qGxVOK2OZnY/vE6D/INwGiQ==", + "version": "2.938.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.938.0.tgz", + "integrity": "sha512-e+KWYRyJ4Tvlg+6kQTze9Hxmkn+4/H8m+D8AXlfgUbtzyc1OBDf7cMCcl8IvCD3xoqELsgEunPC014v2JTTfZg==", "requires": { "buffer": "4.9.2", "events": "1.1.1", diff --git a/package.json b/package.json index 7b7c4c972d..8a6722e57b 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.14.0", "@hms-dbmi-bgm/react-workflow-viz": "0.1.4", - "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.11b2", + "@hms-dbmi-bgm/shared-portal-components": "github:4dn-dcic/shared-portal-components#0.1.12", "babel-polyfill": "^6.26.0", "d3": "^5.16.0", "detect-browser": "^3.0.1", From e5d4fde1346468be19a830716b6f093f54ff6b5c Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Tue, 6 Jul 2021 14:13:17 -0400 Subject: [PATCH 24/28] remove novoPP upper bound to not truncate --- src/encoded/schemas/variant_sample.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/encoded/schemas/variant_sample.json b/src/encoded/schemas/variant_sample.json index ba866207dc..8790d3d17f 100644 --- a/src/encoded/schemas/variant_sample.json +++ b/src/encoded/schemas/variant_sample.json @@ -1292,7 +1292,6 @@ }, { "from": 0.9, - "to": 1, "label": "de novo candidate (strong)" } ] From 5fe2ddbb534d279cc47cd97ec8776ef22a270458 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Tue, 6 Jul 2021 14:23:42 -0400 Subject: [PATCH 25/28] clean up, revert to lte --- src/encoded/search/lucene_builder.py | 2 +- src/encoded/search/search.py | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 601badce8f..19939d21e0 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -432,7 +432,7 @@ def handle_range_filters(cls, request, result, field_filters, doc_types): is_range, f_field, which = cls.extract_field_from_to(field) if is_range: if which == 'to': - range_direction = 'lt' + range_direction = 'lte' else: range_direction = 'gte' diff --git a/src/encoded/search/search.py b/src/encoded/search/search.py index 746e282311..34e31f3245 100644 --- a/src/encoded/search/search.py +++ b/src/encoded/search/search.py @@ -781,12 +781,6 @@ def fix_and_replace_nested_doc_count(result_facet, aggregations, full_agg_name): result_facet['terms'] = sorted(list(term_to_bucket.values()), key=lambda d: d['primary_agg_reverse_nested']['doc_count'], reverse=True) - @staticmethod - def determine_hit_difference(total, result_facet): - """ Determines the hit difference between the given total and the counts in the facets """ - for r in result_facet['ranges']: - pass - def format_facets(self, es_results): """ This method processes the 'aggregations' component of the ES response. From 3e96e57c720f5a68329e3a1e40c162e328fc525c Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Tue, 6 Jul 2021 16:24:49 -0400 Subject: [PATCH 26/28] bring in working snovault --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 174d88c6ed..7fc786b528 100644 --- a/poetry.lock +++ b/poetry.lock @@ -550,7 +550,7 @@ python-versions = "*" [[package]] name = "dcicsnovault" -version = "4.8.0" +version = "4.8.1" description = "Storage support for 4DN Data Portals." category = "main" optional = false @@ -2098,7 +2098,7 @@ test = ["zope.testing"] [metadata] lock-version = "1.1" python-versions = ">=3.6.1,<3.7" -content-hash = "190025fa14811503218c93b9df476eeb81be5bc500c96d745e1df953f215ac8f" +content-hash = "3409cb8782747ef072e7e9550ff1984d603279fd4dc7cdbc9404da05029f6bb2" [metadata.files] apipkg = [ @@ -2307,8 +2307,8 @@ dcicpyvcf = [ {file = "dcicpyvcf-1.0.0.tar.gz", hash = "sha256:c5bf8d585002ab3b95d13a47803376b456b931865e4189c38a18cca47b108449"}, ] dcicsnovault = [ - {file = "dcicsnovault-4.8.0-py3-none-any.whl", hash = "sha256:18c259f873a5e935e5aaadc05b54f76839989b02afb8be58b9c490a0490aeedc"}, - {file = "dcicsnovault-4.8.0.tar.gz", hash = "sha256:d77c65a65fbe75076fe4d856c08dc5affbfc314aec17f83a3176460957dfe1e1"}, + {file = "dcicsnovault-4.8.1-py3-none-any.whl", hash = "sha256:109b3d7214add70a048b5f284d7ce4c51c02a3b56fdb2a4b51f6485b9f907d9a"}, + {file = "dcicsnovault-4.8.1.tar.gz", hash = "sha256:e229f54f09eb68a40d90172cefc0fecc580890867b6b32e63817e3ca59525a91"}, ] dcicutils = [ {file = "dcicutils-1.15.0-py3-none-any.whl", hash = "sha256:1ad2ce8cdae57e42fee5506669af24dc2c181a3188dd07743aba93a87024d04c"}, diff --git a/pyproject.toml b/pyproject.toml index 8f67b6c00d..1edc49b704 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ certifi = ">=2020.11.8" chardet = "3.0.4" colorama = "0.3.3" dcicpyvcf = "1.0.0" -dcicsnovault = "^4.7.5" +dcicsnovault = "^4.8.1" dcicutils = "1.15.0" elasticsearch = "6.8.1" execnet = "1.4.1" From eb88fc0a9256184fdf8eb33a11f7a829ddd2f1b3 Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Tue, 6 Jul 2021 16:28:22 -0400 Subject: [PATCH 27/28] add bucket adjustment --- src/encoded/search/lucene_builder.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/encoded/search/lucene_builder.py b/src/encoded/search/lucene_builder.py index 19939d21e0..c84addbe72 100644 --- a/src/encoded/search/lucene_builder.py +++ b/src/encoded/search/lucene_builder.py @@ -948,6 +948,8 @@ def _build_range_aggregation(cls, query_field, ranges): if 'from' in r and 'to' in r: if r['from'] == 0 and r['to'] == 0: r['to'] = cls.SMALLEST_NONZERO_IEEE_32 + if 'to' in r and r['to'] != cls.SMALLEST_NONZERO_IEEE_32: + r['to'] += cls.SMALLEST_NONZERO_IEEE_32 return { RANGE: { FIELD: query_field, From 3bffbe71eec23bdc92ff9dcc9e2bbf1948e3126f Mon Sep 17 00:00:00 2001 From: William Ronchetti Date: Wed, 7 Jul 2021 08:49:17 -0400 Subject: [PATCH 28/28] fix 2 more aggs that should be ranges --- src/encoded/schemas/variant_sample.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/encoded/schemas/variant_sample.json b/src/encoded/schemas/variant_sample.json index 8790d3d17f..49f31b9ded 100644 --- a/src/encoded/schemas/variant_sample.json +++ b/src/encoded/schemas/variant_sample.json @@ -1365,7 +1365,8 @@ }, "variant.csq_gnomadg_nhomalt": { "title": "Homozygous Count (v3)", - "aggregation_type": "stats", + "aggregation_type": "range", + "hide_facet_counts": true, "number_step": 1, "order": 21, "ranges": [ @@ -1467,7 +1468,8 @@ }, "variant.csq_gnomade2_nhomalt": { "title": "Homozygous Count (v2)", - "aggregation_type": "stats", + "aggregation_type": "range", + "hide_facet_counts": true, "number_step": 1, "order": 33, "ranges": [