Skip to content
Merged

Dev #5049

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
0e6c7b5
no call UI toggle
hanars Sep 18, 2025
ef7281d
implement no call override
hanars Sep 18, 2025
980bde2
test no call inheritance override
hanars Sep 18, 2025
d30ac27
no call override quality
hanars Sep 18, 2025
a0db6ed
test no call quality filter
hanars Sep 18, 2025
5e5600d
add ui option
hanars Sep 18, 2025
decce66
add server side constants
hanars Sep 19, 2025
3467081
base class implementation of clinvar filter
hanars Sep 19, 2025
7ebbe1b
implement conflicting override
hanars Sep 19, 2025
93f7481
update saved searches
hanars Sep 19, 2025
37a5eb0
unit tests
hanars Sep 19, 2025
d1fa127
add ui filter
hanars Sep 19, 2025
5ca3196
implement alphamissense filter
hanars Sep 19, 2025
d2c5819
score filter hover
hanars Sep 19, 2025
b54743b
clean up
hanars Sep 19, 2025
0fa57ab
unit tests
hanars Sep 19, 2025
a0cf1b2
add exclude search toggle to ui
hanars Sep 19, 2025
a32d96f
first pass exclude results
hanars Sep 19, 2025
586d60d
handle comp hets and multi data type
hanars Sep 19, 2025
f403bdf
share utility method
hanars Sep 19, 2025
9af6f89
todo
hanars Sep 22, 2025
33f1ac7
Merge branch 'dev' of https://github.com/broadinstitute/seqr into con…
hanars Sep 22, 2025
469b939
override up to likely path
hanars Sep 22, 2025
2d8deec
fix test
hanars Sep 22, 2025
5ba8d76
properly set search has in ui search
hanars Sep 22, 2025
8081ddb
use updated search model
hanars Sep 22, 2025
3a40c05
fix comp het pair filter
hanars Sep 22, 2025
cc2f411
test search model creation
hanars Sep 22, 2025
e41ca89
test previous does nothing for es search
hanars Sep 22, 2025
2c05143
test exclude cached previous results
hanars Sep 22, 2025
45b4f19
enable all clickhouse data management pages
hanars Sep 22, 2025
eaf77f1
Merge pull request #5029 from broadinstitute/no-call-inheritance
hanars Sep 25, 2025
5ed04c0
Merge pull request #5034 from broadinstitute/alphamissense-filter
hanars Sep 25, 2025
b80cbd7
Merge pull request #5037 from broadinstitute/pipeline-ui-seqr-page
hanars Sep 25, 2025
65d6036
clearer trigger delete ui
hanars Sep 25, 2025
8174297
disable search samples on trigger delete
hanars Sep 25, 2025
a092d68
better info message
hanars Sep 25, 2025
33e6fbd
remove duplicate manage command
hanars Sep 25, 2025
eec762e
Merge branch 'dev' of https://github.com/broadinstitute/seqr into exc…
hanars Sep 25, 2025
3d0c5e1
unit test clickhouse
hanars Sep 25, 2025
84e7e57
fix js test
hanars Sep 25, 2025
d2469d3
codacy
hanars Sep 25, 2025
ff96798
fix test
hanars Sep 25, 2025
7e1d821
clean up imports
hanars Sep 25, 2025
58a2028
clean up
hanars Sep 25, 2025
2337851
fix syntax
hanars Sep 25, 2025
3ac7f03
fix mocks
hanars Sep 25, 2025
a51b934
helper function
hanars Sep 25, 2025
4907e89
remove ui option for skip validation on data loading
hanars Sep 25, 2025
934fa10
flag places where need update
hanars Sep 25, 2025
8d84496
Merge pull request #5043 from broadinstitute/post-backend-cleanup-codacy
hanars Sep 25, 2025
745f20f
Merge pull request #5044 from broadinstitute/no-skip-validation-ui
hanars Sep 25, 2025
6964852
store gene ids on saved variant model
hanars Sep 25, 2025
781ac85
sort gene transcripts
hanars Sep 25, 2025
a72dbfc
set gene ids for new saved variants
hanars Sep 25, 2025
e2329bb
update fixtures
hanars Sep 25, 2025
494c1ff
fix migration output field
hanars Sep 26, 2025
e732f35
update saved variant gene filter
hanars Sep 26, 2025
737cb20
clean up family discovery genes
hanars Sep 26, 2025
47e8f9f
fix tests
hanars Sep 26, 2025
79d65e8
remove clickhosue call from matchmaker summary
hanars Sep 26, 2025
12c561d
clean up all discovery genes
hanars Sep 26, 2025
8397e82
Merge pull request #5041 from broadinstitute/delete-search-functional…
hanars Sep 26, 2025
e3e7df1
Merge pull request #5035 from broadinstitute/conflicting-clinvar-search
hanars Sep 26, 2025
8373754
Merge branch 'dev' of https://github.com/broadinstitute/seqr into sav…
hanars Sep 26, 2025
699709c
minimize clickhosue calls for gene notes
hanars Sep 26, 2025
24d7e4a
report cleanup
hanars Sep 26, 2025
1611f36
set gene ids for bulk aip
hanars Sep 26, 2025
6838759
set gene ids on bulk create gregor
hanars Sep 26, 2025
e91f919
cleanup
hanars Sep 26, 2025
52c94b7
changelog
hanars Sep 26, 2025
1707321
distict for migration
hanars Sep 26, 2025
af0f51b
fail file iter when error occurs
hanars Sep 26, 2025
de904a3
update tests
hanars Sep 26, 2025
ce7122a
fix test
hanars Sep 26, 2025
2fa6d1d
clean up sv id mapping for set key
hanars Sep 26, 2025
35cabcc
remove unused import
hanars Sep 26, 2025
6a796f3
remove unused code
hanars Sep 29, 2025
a1fd37e
fix unit test image
hanars Sep 29, 2025
ac2156a
Merge pull request #5042 from broadinstitute/exclude-current-search-r…
hanars Sep 29, 2025
72de526
Merge pull request #5046 from broadinstitute/show-error-when-file-ite…
hanars Sep 29, 2025
22ccdea
Merge pull request #5047 from broadinstitute/set-variant-key-sv-cleanup
hanars Sep 29, 2025
c8a3631
use correct field for querying sample remap
hanars Sep 29, 2025
c656167
Merge branch 'dev' of https://github.com/broadinstitute/seqr into sav…
hanars Sep 29, 2025
4661f97
Merge pull request #5045 from broadinstitute/saved-variant-gene-ids
hanars Sep 29, 2025
fcee374
Merge pull request #5048 from broadinstitute/airtable-remap-issue
hanars Sep 29, 2025
6fada88
bump changelog
hanars Sep 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
# Maps tcp port 5432 on service container to the host
- 5432:5432
clickhouse:
image: bitnami/clickhouse:latest
image: bitnamilegacy/clickhouse:latest
ports:
- 9000:9000 # Native client interface
volumes:
Expand Down
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
## dev

## 9/18/25
# Deprecate hail backend support
* Store gene ids on SavedVariant model (REQUIRES DB MIGRATION)

## 9/29/25
* Deprecate hail backend support

## 8/7/25
* Deprecate support for lifting existing projects from GRCH37 to GRCh38
Expand Down
6 changes: 6 additions & 0 deletions clickhouse_search/backend/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
class Array(Func):
function = 'array'

def _resolve_output_field(self):
output_field = super()._resolve_output_field()
if not isinstance(output_field, ArrayField):
output_field = ArrayField(base_field=output_field)
return output_field


class ArrayConcat(Func):
function = 'arrayConcat'
Expand Down
8 changes: 4 additions & 4 deletions clickhouse_search/fixtures/clickhouse_saved_variants.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@
"pk": 101,
"fields": {
"key": 101,
"variant_id": "suffix_19107_DEL"
"variant_id": "suffix_19107_DEL_013746"
}
}, {
"model": "clickhouse_search.annotationssv",
Expand All @@ -225,7 +225,7 @@
"end_chrom": null,
"pos": 249045487,
"end": 249045898,
"variant_id": "suffix_19107_DEL",
"variant_id": "suffix_19107_DEL_013746",
"lifted_over_chrom": null,
"lifted_over_pos": null,
"rg37_locus_end": [null, null],
Expand All @@ -250,7 +250,7 @@
"pk": 111,
"fields": {
"key": 111,
"variant_id": "prefix_70191_DEL"
"variant_id": "prefix_19107_DEL"
}
}, {
"model": "clickhouse_search.annotationsgcnv",
Expand All @@ -261,7 +261,7 @@
"chrom": "1",
"pos": 249045487,
"end": 249045898,
"variant_id": "prefix_70191_DEL",
"variant_id": "prefix_19107_DEL",
"lifted_over_chrom": "2",
"lifted_over_pos": null,
"rg37_locus_end": [null, null],
Expand Down
6 changes: 3 additions & 3 deletions clickhouse_search/fixtures/clickhouse_search.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"populations": [
[35805, 0.29499999, 121372, 0.41530353, 0, 24061, 5872],
[72672, 0.28899795, 251462, 0.4116475, 0, 11567],
[0, 0, 0, 0, 0, 0],
[927, 0.03444932, 26912, 0.04027665, 0, 0],
[65154, 0.246152, 264690, 47604, 8775]
],
"sorted_transcript_consequences": [
Expand Down Expand Up @@ -124,7 +124,7 @@
],
"sorted_transcript_consequences": [
[null, null, ["splice_donor_variant"], true, null, "ENSG00000097046"],
[null, 1, ["missense_variant"], false, null, "ENSG00000097046"],
[0.1, 1, ["missense_variant"], false, null, "ENSG00000097046"],
[null, null, ["missense_variant"], false, null, "ENSG00000097046"]
],
"sorted_motif_feature_consequences": [
Expand Down Expand Up @@ -681,7 +681,7 @@
],
"sign": 1,
"calls": [
["HG00733", 1, 99, 0.6530612111091614, 49],
["HG00733", null, 0, null, null],
["HG00731", 2, 48, 1, 16]
]
}
Expand Down
2 changes: 1 addition & 1 deletion clickhouse_search/fixtures/clickhouse_transcripts.json
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
], null]
],
[
[null], null, "protein_coding", 1, null, ["missense_variant"], [null, null], "ENSG00000097046",
[0.1], null, "protein_coding", 1, null, ["missense_variant"], [null, null], "ENSG00000097046",
"ENST00000350997.12:c.375+139G>A", null, [1, 11], [null, []], "missense_variant", null, "NM_013402.7",
"NM_013402.7", [false], "ENST00000350997", 1, [null, null, null, [
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
Expand Down
2,082 changes: 2 additions & 2,080 deletions clickhouse_search/management/commands/set_saved_variant_key.py

Large diffs are not rendered by default.

27 changes: 9 additions & 18 deletions clickhouse_search/management/tests/set_saved_variant_key_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def setUpTestData(cls):
@mock.patch('seqr.utils.file_utils.subprocess.Popen')
def test_command(self, mock_subprocess):
mock_subprocess.return_value.stdout = self.MOCK_GCNV_DATA
mock_subprocess.return_value.wait.return_value = 0

call_command('set_saved_variant_key')
self.assert_json_logs(user=None, expected=[
Expand All @@ -39,21 +40,14 @@ def test_command(self, mock_subprocess):
('Updated batch of 2', None),
('Updated keys for 2 SNV_INDEL (GRCh38) variants', None),
('Finding keys for 2 SV_WGS (GRCh38) variant ids', None),
('Found 0 keys', None),
('Finding keys for 2 SV_WES (GRCh38) variant ids', None),
('Found 0 keys', None),
('2 SV variants have no key, 0 of which have no search data, 0 of which are known to have dropped out of the callset.', None),
('==> gsutil cat gs://seqr-datasets-gcnv/GRCh38/RDG_WES_Broad_Internal/v4/CMG_gCNV_2022_annotated.ensembl.round2_3.strvctvre.tsv.gz | gunzip -c -q - ', None),
('Mapping reloaded SV_WES IDs to latest version', None),
('Finding keys for 1 SV_WES (GRCh38) variant ids', None),
('Found 1 keys', None),
('Updated batch of 1', None),
('Updated keys for 1 SV_WES (GRCh38) variants', None),
('Mapping reloaded SV_WGS IDs to latest version', None),
('Finding keys for 1 SV_WGS (GRCh38) variant ids', None),
('Updated keys for 1 SV_WGS (GRCh38) variants', None),
('No key found for 1 variants', None),
('Finding keys for 1 SV_WES (GRCh38) variant ids', None),
('Found 1 keys', None),
('Updated batch of 1', None),
('Updated keys for 1 SV_WGS (GRCh38) variants', None),
('Updated keys for 1 SV_WES (GRCh38) variants', None),
('Finding keys for 7 SNV_INDEL (GRCh37) variant ids', None),
('Found 1 keys', None),
('Updated batch of 1', None),
Expand All @@ -70,9 +64,9 @@ def test_command(self, mock_subprocess):
{'guid': 'SV0000002_1248367227_r0390_100', 'key': 100, 'variant_id': '1-248367227-TC-T', 'dataset_type': 'SNV_INDEL', 'genotypes': {'I000004_hg00731': {'numAlt': 2}, 'I000005_hg00732': {'numAlt': 1}}, 'saved_variant_json': {}},
{'guid': 'SV0000006_1248367227_r0003_tes', 'key': 100, 'variant_id': '1-248367227-TC-T', 'dataset_type': 'SNV_INDEL', 'genotypes': {'I000002_na19675': mock.ANY, 'I000017_na20889': mock.ANY}, 'saved_variant_json': {}},
{'guid': 'SV0000006_1248367227_r0004_non', 'key': 100, 'variant_id': '1-248367227-TC-T', 'dataset_type': 'SNV_INDEL', 'genotypes': {'I000018_na21234': {'sampleId': 'NA20885', 'ab': 0.0, 'gq': 99.0, 'numAlt': 1}}, 'saved_variant_json': {}},
{'guid': 'SV0000007_prefix_19107_DEL_r00', 'key': 111, 'variant_id': 'prefix_70191_DEL', 'dataset_type': 'SV_WES', 'genotypes': {'I000017_na20889': { 'cn': 1, 'sampleId': 'NA20885', 'numAlt': -1, 'defragged': False, 'qs': 33, 'numExon': 2}}, 'saved_variant_json': {}},
{'guid': 'SV0000007_prefix_19107_DEL_r00', 'key': 111, 'variant_id': 'prefix_19107_DEL', 'dataset_type': 'SV_WES', 'genotypes': {'I000017_na20889': { 'cn': 1, 'sampleId': 'NA20885', 'numAlt': -1, 'defragged': False, 'qs': 33, 'numExon': 2}}, 'saved_variant_json': {}},
{'guid': 'SV0000009_25000014783_r0004_no', 'key': 100, 'variant_id': 'M-14783-T-C', 'dataset_type': 'MITO', 'genotypes': {'I000018_na21234': mock.ANY}, 'saved_variant_json': {}},
{'guid': 'SV0000013_prefix_19107_DEL_r00', 'key': 101, 'variant_id': 'suffix_19107_DEL', 'dataset_type': 'SV_WGS', 'genotypes': {'I000018_na21234': mock.ANY}, 'saved_variant_json': {}},
{'guid': 'SV0000013_prefix_19107_DEL_r00', 'key': 101, 'variant_id': 'suffix_19107_DEL_013746', 'dataset_type': 'SV_WGS', 'genotypes': {'I000018_na21234': mock.ANY}, 'saved_variant_json': {}},
{'guid': 'SV0027166_191912634_r0384_rare', 'key': None, 'variant_id': '19-1912634-C-T', 'dataset_type': None, 'genotypes': mock.ANY, 'saved_variant_json': mock.ANY},
{'guid': 'SV0027167_191912633_r0384_rare', 'key': None, 'variant_id': '19-1912633-G-T', 'dataset_type': None, 'genotypes': mock.ANY, 'saved_variant_json': mock.ANY},
{'guid': 'SV0027168_191912632_r0384_rare', 'key': None, 'variant_id': '19-1912632-G-C', 'dataset_type': None, 'genotypes': mock.ANY, 'saved_variant_json': mock.ANY},
Expand Down Expand Up @@ -106,6 +100,7 @@ class SetSavedVariantKeyFailedMappingTest(SetSavedVariantKeyTest):
@mock.patch('seqr.utils.file_utils.subprocess.Popen')
def test_command(self, mock_subprocess):
mock_subprocess.return_value.stdout = self.MOCK_GCNV_DATA
mock_subprocess.return_value.wait.return_value = 0

call_command('set_saved_variant_key')
self.assert_json_logs(user=None, expected=[
Expand All @@ -121,12 +116,8 @@ def test_command(self, mock_subprocess):
('Finding keys for 2 SV_WES (GRCh38) variant ids', None),
('Found 0 keys', None),
('2 SV variants have no key, 0 of which have no search data, 0 of which are known to have dropped out of the callset.', None),
('==> gsutil cat gs://seqr-datasets-gcnv/GRCh38/RDG_WES_Broad_Internal/v4/CMG_gCNV_2022_annotated.ensembl.round2_3.strvctvre.tsv.gz | gunzip -c -q - ', None),
('Mapping reloaded SV_WGS IDs to latest version', None),
('Finding keys for 1 SV_WGS (GRCh38) variant ids', None),
('Found 0 keys', None),
("1 variants failed ID mapping: ['suffix_19107_DEL']", None),
('1 remaining SV WES variants prefix_19107_DEL - 12', None),
('1 remaining SV WGS variants suffix_19107_DEL_013746 - fam14', None),
('Finding keys for 7 SNV_INDEL (GRCh37) variant ids', None),
('Found 0 keys', None),
('7 variants have no key, 0 of which have no search data, 7 of which are absent from the hail backend.', None),
Expand Down
Loading