scout-browser 4.83__py3-none-any.whl → 4.84__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scout/__version__.py +1 -1
- scout/adapter/mongo/case.py +5 -1
- scout/adapter/mongo/variant.py +9 -0
- scout/adapter/mongo/variant_loader.py +73 -71
- scout/build/genes/hgnc_gene.py +5 -134
- scout/commands/download/ensembl.py +1 -0
- scout/commands/download/everything.py +1 -0
- scout/commands/download/exac.py +1 -0
- scout/commands/download/hgnc.py +1 -0
- scout/commands/download/hpo.py +1 -0
- scout/commands/download/omim.py +1 -0
- scout/commands/export/database.py +1 -0
- scout/commands/load/panel.py +1 -0
- scout/commands/load/report.py +1 -0
- scout/commands/update/omim.py +1 -0
- scout/commands/update/panelapp.py +1 -0
- scout/constants/file_types.py +86 -17
- scout/export/exon.py +1 -0
- scout/load/all.py +5 -1
- scout/load/hgnc_gene.py +1 -1
- scout/models/hgnc_map.py +50 -87
- scout/models/phenotype_term.py +3 -3
- scout/parse/orpha.py +1 -0
- scout/parse/variant/conservation.py +1 -0
- scout/server/blueprints/cases/templates/cases/case.html +95 -88
- scout/server/blueprints/panels/forms.py +1 -0
- scout/server/blueprints/variant/controllers.py +9 -14
- scout/server/blueprints/variants/controllers.py +11 -27
- scout/server/extensions/bionano_extension.py +1 -0
- scout/server/extensions/chanjo_extension.py +10 -9
- scout/server/extensions/gens_extension.py +1 -0
- scout/server/extensions/ldap_extension.py +5 -3
- scout/server/extensions/loqus_extension.py +16 -14
- scout/server/extensions/matchmaker_extension.py +1 -0
- scout/server/extensions/mongo_extension.py +1 -0
- scout/server/extensions/rerunner_extension.py +1 -0
- scout/server/links.py +4 -4
- scout/server/static/bs_styles.css +5 -5
- scout/utils/ensembl_rest_clients.py +1 -0
- scout/utils/scout_requests.py +1 -0
- scout/utils/sort.py +21 -0
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/METADATA +2 -5
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/RECORD +47 -46
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/WHEEL +1 -1
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/entry_points.txt +0 -1
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/LICENSE +0 -0
- {scout_browser-4.83.dist-info → scout_browser-4.84.dist-info}/top_level.txt +0 -0
scout/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "4.
|
1
|
+
__version__ = "4.84"
|
scout/adapter/mongo/case.py
CHANGED
@@ -14,6 +14,7 @@ from scout.constants import ACMG_MAP, FILE_TYPE_MAP, ID_PROJECTION
|
|
14
14
|
from scout.exceptions import ConfigError, IntegrityError
|
15
15
|
from scout.parse.variant.ids import parse_document_id
|
16
16
|
from scout.utils.algorithms import ui_score
|
17
|
+
from scout.utils.sort import get_load_priority
|
17
18
|
|
18
19
|
LOG = logging.getLogger(__name__)
|
19
20
|
|
@@ -904,7 +905,10 @@ class CaseHandler(object):
|
|
904
905
|
continue
|
905
906
|
load_variants.add((vcf_file["variant_type"], vcf_file["category"]))
|
906
907
|
|
907
|
-
for variant_type, category in
|
908
|
+
for variant_type, category in sorted(
|
909
|
+
load_variants,
|
910
|
+
key=lambda tup: get_load_priority(variant_type=tup[0], category=tup[1]),
|
911
|
+
):
|
908
912
|
if update:
|
909
913
|
self.delete_variants(
|
910
914
|
case_id=case_obj["_id"],
|
scout/adapter/mongo/variant.py
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# stdlib modules
|
3
3
|
import logging
|
4
4
|
import re
|
5
|
+
from typing import Any
|
5
6
|
|
6
7
|
# Third party modules
|
7
8
|
import pymongo
|
@@ -221,6 +222,14 @@ class VariantHandler(VariantLoader):
|
|
221
222
|
query = self.build_query(case_id, query=query, variant_ids=variant_ids, category=category)
|
222
223
|
return self.variant_collection.count_documents(query)
|
223
224
|
|
225
|
+
def variant_update_field(self, variant_id: str, field_name: str, field_value: Any) -> dict:
|
226
|
+
"""Updates the value of the given key(field_name) in the variant document in the database."""
|
227
|
+
return self.variant_collection.find_one_and_update(
|
228
|
+
{"_id": variant_id},
|
229
|
+
{"$set": {field_name: field_value}},
|
230
|
+
return_document=pymongo.ReturnDocument.AFTER,
|
231
|
+
)
|
232
|
+
|
224
233
|
def variant(
|
225
234
|
self,
|
226
235
|
document_id=None,
|
@@ -27,6 +27,7 @@ from scout.parse.variant.headers import (
|
|
27
27
|
from scout.parse.variant.ids import parse_simple_id
|
28
28
|
from scout.parse.variant.managed_variant import parse_managed_variant_id
|
29
29
|
from scout.parse.variant.rank_score import parse_rank_score
|
30
|
+
from scout.utils.sort import get_load_priority
|
30
31
|
|
31
32
|
LOG = logging.getLogger(__name__)
|
32
33
|
|
@@ -200,87 +201,88 @@ class VariantLoader(object):
|
|
200
201
|
"""
|
201
202
|
|
202
203
|
case_id = case_obj["_id"]
|
203
|
-
# Possible categories 'snv', 'sv', 'str', 'cancer', 'cancer_sv'
|
204
|
-
|
205
|
-
# Possible variant types 'clinical', 'research'
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
if case_obj.get("vcf_files", {}).get(file_type)
|
210
|
-
|
211
|
-
variant_types.add(FILE_TYPE_MAP[file_type]["variant_type"])
|
204
|
+
# Possible categories 'snv', 'sv', 'str', 'cancer', 'cancer_sv'. Sort according to load order to ensure Cancer SNVs before
|
205
|
+
# Cancer SVs, in particular, and keep a consistent variant_id collision resolution order.
|
206
|
+
# Possible variant types are 'clinical', 'research'.
|
207
|
+
load_variants = {
|
208
|
+
(FILE_TYPE_MAP[file_type]["variant_type"], FILE_TYPE_MAP[file_type]["category"])
|
209
|
+
for file_type in FILE_TYPE_MAP
|
210
|
+
if case_obj.get("vcf_files", {}).get(file_type)
|
211
|
+
}
|
212
212
|
|
213
213
|
coding_intervals = self.get_coding_intervals(build=build)
|
214
214
|
# Loop over all intervals
|
215
215
|
for chrom in CHROMOSOMES:
|
216
216
|
intervals = coding_intervals.get(chrom, IntervalTree())
|
217
|
-
for var_type in
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
217
|
+
for var_type, category in sorted(
|
218
|
+
list(load_variants),
|
219
|
+
key=lambda tup: get_load_priority(variant_type=tup[0], category=tup[1]),
|
220
|
+
):
|
221
|
+
LOG.info(
|
222
|
+
"Updating compounds on chromosome:{0}, type:{1}, category:{2} for case:{3}".format(
|
223
|
+
chrom, var_type, category, case_id
|
223
224
|
)
|
225
|
+
)
|
226
|
+
|
227
|
+
# Fetch all variants from a chromosome
|
228
|
+
query = {"variant_type": var_type, "chrom": chrom}
|
229
|
+
|
230
|
+
# Get all variants from the database of the specific type
|
231
|
+
variant_objs = self.variants(
|
232
|
+
case_id=case_id,
|
233
|
+
query=query,
|
234
|
+
category=category,
|
235
|
+
nr_of_variants=-1,
|
236
|
+
sort_key="position",
|
237
|
+
)
|
238
|
+
|
239
|
+
# Initiate a bulk
|
240
|
+
bulk = {}
|
241
|
+
current_region = None
|
242
|
+
special = False
|
224
243
|
|
225
|
-
|
226
|
-
|
244
|
+
# Loop over the variants and check if they are in a coding region
|
245
|
+
for var_obj in variant_objs:
|
246
|
+
var_id = var_obj["_id"]
|
247
|
+
var_chrom = var_obj["chromosome"]
|
248
|
+
var_start = var_obj["position"]
|
249
|
+
var_end = var_obj["end"] + 1
|
227
250
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
sort_key="position",
|
251
|
+
update_bulk = True
|
252
|
+
new_region = None
|
253
|
+
|
254
|
+
# Check if the variant is in a coding region
|
255
|
+
genomic_regions = coding_intervals.get(var_chrom, IntervalTree()).overlap(
|
256
|
+
var_start, var_end
|
235
257
|
)
|
236
258
|
|
237
|
-
#
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
# we add it to the same bulk
|
265
|
-
update_bulk = False
|
266
|
-
|
267
|
-
current_region = new_region
|
268
|
-
|
269
|
-
# If the variant is not in a current region we update the compounds
|
270
|
-
# from the previous region, if any. Otherwise continue
|
271
|
-
if update_bulk and bulk:
|
272
|
-
self.update_compounds(bulk)
|
273
|
-
self.update_mongo_compound_variants(bulk)
|
274
|
-
bulk = {}
|
275
|
-
|
276
|
-
if new_region:
|
277
|
-
bulk[var_id] = var_obj
|
278
|
-
|
279
|
-
if not bulk:
|
280
|
-
continue
|
281
|
-
|
282
|
-
self.update_compounds(bulk)
|
283
|
-
self.update_mongo_compound_variants(bulk)
|
259
|
+
# If the variant is in a coding region
|
260
|
+
if genomic_regions:
|
261
|
+
# We know there is data here so get the interval id
|
262
|
+
new_region = genomic_regions.pop().data
|
263
|
+
|
264
|
+
if new_region and (new_region == current_region):
|
265
|
+
# If the variant is in the same region as previous
|
266
|
+
# we add it to the same bulk
|
267
|
+
update_bulk = False
|
268
|
+
|
269
|
+
current_region = new_region
|
270
|
+
|
271
|
+
# If the variant is not in a current region we update the compounds
|
272
|
+
# from the previous region, if any. Otherwise continue
|
273
|
+
if update_bulk and bulk:
|
274
|
+
self.update_compounds(bulk)
|
275
|
+
self.update_mongo_compound_variants(bulk)
|
276
|
+
bulk = {}
|
277
|
+
|
278
|
+
if new_region:
|
279
|
+
bulk[var_id] = var_obj
|
280
|
+
|
281
|
+
if not bulk:
|
282
|
+
continue
|
283
|
+
|
284
|
+
self.update_compounds(bulk)
|
285
|
+
self.update_mongo_compound_variants(bulk)
|
284
286
|
|
285
287
|
LOG.info("All compounds updated")
|
286
288
|
|
scout/build/genes/hgnc_gene.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import logging
|
2
2
|
|
3
|
-
from scout.constants import GENE_CONSTRAINT_LABELS
|
4
3
|
from scout.models.hgnc_map import HgncGene
|
5
4
|
|
6
5
|
LOG = logging.getLogger(__name__)
|
@@ -16,137 +15,9 @@ def build_phenotype(phenotype_info):
|
|
16
15
|
return phenotype_obj
|
17
16
|
|
18
17
|
|
19
|
-
def build_hgnc_gene(gene_info, build="37"):
|
20
|
-
"""Build a
|
18
|
+
def build_hgnc_gene(gene_info: dict, build: bool = "37") -> dict:
|
19
|
+
"""Build a HGNC gene object"""
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Returns:
|
26
|
-
gene_obj(dict)
|
27
|
-
|
28
|
-
{
|
29
|
-
'_id': ObjectId(),
|
30
|
-
# This is the hgnc id, required:
|
31
|
-
'hgnc_id': int,
|
32
|
-
# The primary symbol, required
|
33
|
-
'hgnc_symbol': str,
|
34
|
-
'ensembl_id': str, # required
|
35
|
-
'build': str, # '37' or '38', defaults to '37', required
|
36
|
-
|
37
|
-
'chromosome': str, # required
|
38
|
-
'start': int, # required
|
39
|
-
'end': int, # required
|
40
|
-
|
41
|
-
'description': str, # Gene description
|
42
|
-
'aliases': list(), # Gene symbol aliases, includes hgnc_symbol, str
|
43
|
-
'entrez_id': int,
|
44
|
-
'omim_id': int,
|
45
|
-
'pli_score': float,
|
46
|
-
'primary_transcripts': list(), # List of refseq transcripts (str)
|
47
|
-
'ucsc_id': str,
|
48
|
-
'uniprot_ids': list(), # List of str
|
49
|
-
'vega_id': str,
|
50
|
-
'transcripts': list(), # List of hgnc_transcript
|
51
|
-
|
52
|
-
# Inheritance information
|
53
|
-
'inheritance_models': list(), # List of model names
|
54
|
-
'incomplete_penetrance': bool, # Acquired from HPO
|
55
|
-
|
56
|
-
# Phenotype information
|
57
|
-
'phenotypes': list(), # List of dictionaries with phenotype information
|
58
|
-
}
|
59
|
-
"""
|
60
|
-
try:
|
61
|
-
hgnc_id = int(gene_info["hgnc_id"])
|
62
|
-
except KeyError as err:
|
63
|
-
raise KeyError("Gene has to have a hgnc_id")
|
64
|
-
except ValueError as err:
|
65
|
-
raise ValueError("hgnc_id has to be integer")
|
66
|
-
|
67
|
-
try:
|
68
|
-
hgnc_symbol = gene_info["hgnc_symbol"]
|
69
|
-
except KeyError as err:
|
70
|
-
raise KeyError("Gene has to have a hgnc_symbol")
|
71
|
-
|
72
|
-
try:
|
73
|
-
ensembl_id = gene_info["ensembl_gene_id"]
|
74
|
-
except KeyError as err:
|
75
|
-
raise KeyError("Gene has to have a ensembl_id")
|
76
|
-
|
77
|
-
try:
|
78
|
-
chromosome = gene_info["chromosome"]
|
79
|
-
except KeyError as err:
|
80
|
-
raise KeyError("Gene has to have a chromosome")
|
81
|
-
|
82
|
-
try:
|
83
|
-
start = int(gene_info["start"])
|
84
|
-
except KeyError as err:
|
85
|
-
raise KeyError("Gene has to have a start position")
|
86
|
-
except TypeError as err:
|
87
|
-
raise TypeError("Gene start has to be a integer")
|
88
|
-
|
89
|
-
try:
|
90
|
-
end = int(gene_info["end"])
|
91
|
-
except KeyError as err:
|
92
|
-
raise KeyError("Gene has to have a end position")
|
93
|
-
except TypeError as err:
|
94
|
-
raise TypeError("Gene end has to be a integer")
|
95
|
-
|
96
|
-
gene_obj = HgncGene(
|
97
|
-
hgnc_id=hgnc_id,
|
98
|
-
hgnc_symbol=hgnc_symbol,
|
99
|
-
ensembl_id=ensembl_id,
|
100
|
-
chrom=chromosome,
|
101
|
-
start=start,
|
102
|
-
end=end,
|
103
|
-
build=build,
|
104
|
-
)
|
105
|
-
|
106
|
-
if gene_info.get("description"):
|
107
|
-
gene_obj["description"] = gene_info["description"]
|
108
|
-
# LOG.debug("Adding info %s", gene_info['description'])
|
109
|
-
|
110
|
-
if gene_info.get("previous_symbols"):
|
111
|
-
gene_obj["aliases"] = gene_info["previous_symbols"]
|
112
|
-
|
113
|
-
if gene_info.get("entrez_id"):
|
114
|
-
gene_obj["entrez_id"] = int(gene_info["entrez_id"])
|
115
|
-
|
116
|
-
if gene_info.get("omim_id"):
|
117
|
-
gene_obj["omim_id"] = int(gene_info["omim_id"])
|
118
|
-
|
119
|
-
for constraint in GENE_CONSTRAINT_LABELS.keys():
|
120
|
-
if gene_info.get(constraint):
|
121
|
-
gene_obj[constraint] = float(gene_info[constraint])
|
122
|
-
|
123
|
-
if gene_info.get("ref_seq"):
|
124
|
-
gene_obj["primary_transcripts"] = gene_info["ref_seq"]
|
125
|
-
|
126
|
-
if gene_info.get("ucsc_id"):
|
127
|
-
gene_obj["ucsc_id"] = gene_info["ucsc_id"]
|
128
|
-
|
129
|
-
if gene_info.get("uniprot_ids"):
|
130
|
-
gene_obj["uniprot_ids"] = gene_info["uniprot_ids"]
|
131
|
-
|
132
|
-
if gene_info.get("vega_id"):
|
133
|
-
gene_obj["vega_id"] = gene_info["vega_id"]
|
134
|
-
|
135
|
-
if gene_info.get("incomplete_penetrance"):
|
136
|
-
gene_obj["incomplete_penetrance"] = True
|
137
|
-
|
138
|
-
if gene_info.get("inheritance_models"):
|
139
|
-
gene_obj["inheritance_models"] = gene_info["inheritance_models"]
|
140
|
-
|
141
|
-
phenotype_objs = []
|
142
|
-
for phenotype_info in gene_info.get("phenotypes", []):
|
143
|
-
phenotype_objs.append(build_phenotype(phenotype_info))
|
144
|
-
|
145
|
-
if phenotype_objs:
|
146
|
-
gene_obj["phenotypes"] = phenotype_objs
|
147
|
-
|
148
|
-
for key in list(gene_obj):
|
149
|
-
if gene_obj[key] is None:
|
150
|
-
gene_obj.pop(key)
|
151
|
-
|
152
|
-
return gene_obj
|
21
|
+
gene_info["build"] = build
|
22
|
+
hgnc_gene = HgncGene(**gene_info)
|
23
|
+
return hgnc_gene.model_dump(exclude_none=True)
|
scout/commands/download/exac.py
CHANGED
scout/commands/download/hgnc.py
CHANGED
scout/commands/download/hpo.py
CHANGED
scout/commands/download/omim.py
CHANGED
scout/commands/load/panel.py
CHANGED
scout/commands/load/report.py
CHANGED
scout/commands/update/omim.py
CHANGED
scout/constants/file_types.py
CHANGED
@@ -1,21 +1,90 @@
|
|
1
1
|
# Collect general information about the file types used in Scout
|
2
|
+
# Load priority determines load order, with lowest value loaded first.
|
2
3
|
|
3
4
|
FILE_TYPE_MAP = {
|
4
|
-
"vcf_cancer": {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
"
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
"
|
20
|
-
|
5
|
+
"vcf_cancer": {
|
6
|
+
"category": "cancer",
|
7
|
+
"variant_type": "clinical",
|
8
|
+
"load_priority": 10,
|
9
|
+
},
|
10
|
+
"vcf_cancer_research": {
|
11
|
+
"category": "cancer",
|
12
|
+
"variant_type": "research",
|
13
|
+
"load_priority": 110,
|
14
|
+
},
|
15
|
+
"vcf_cancer_sv": {
|
16
|
+
"category": "cancer_sv",
|
17
|
+
"variant_type": "clinical",
|
18
|
+
"load_priority": 20,
|
19
|
+
},
|
20
|
+
"vcf_cancer_sv_research": {
|
21
|
+
"category": "cancer_sv",
|
22
|
+
"variant_type": "research",
|
23
|
+
"load_priority": 120,
|
24
|
+
},
|
25
|
+
"vcf_fusion": {
|
26
|
+
"category": "fusion",
|
27
|
+
"variant_type": "clinical",
|
28
|
+
"load_priority": 70,
|
29
|
+
},
|
30
|
+
"vcf_fusion_research": {
|
31
|
+
"category": "fusion",
|
32
|
+
"variant_type": "research",
|
33
|
+
"load_priority": 170,
|
34
|
+
},
|
35
|
+
"vcf_mei": {
|
36
|
+
"category": "mei",
|
37
|
+
"variant_type": "clinical",
|
38
|
+
"load_priority": 60,
|
39
|
+
},
|
40
|
+
"vcf_mei_research": {
|
41
|
+
"category": "mei",
|
42
|
+
"variant_type": "research",
|
43
|
+
"load_priority": 160,
|
44
|
+
},
|
45
|
+
"vcf_snv": {
|
46
|
+
"category": "snv",
|
47
|
+
"variant_type": "clinical",
|
48
|
+
"load_priority": 35,
|
49
|
+
},
|
50
|
+
"vcf_snv_mt": {
|
51
|
+
"category": "snv",
|
52
|
+
"variant_type": "clinical",
|
53
|
+
"load_priority": 30,
|
54
|
+
},
|
55
|
+
"vcf_snv_research": {
|
56
|
+
"category": "snv",
|
57
|
+
"variant_type": "research",
|
58
|
+
"load_priority": 135,
|
59
|
+
},
|
60
|
+
"vcf_snv_research_mt": {
|
61
|
+
"category": "snv",
|
62
|
+
"variant_type": "research",
|
63
|
+
"load_priority": 130,
|
64
|
+
},
|
65
|
+
"vcf_sv": {
|
66
|
+
"category": "sv",
|
67
|
+
"variant_type": "clinical",
|
68
|
+
"load_priority": 45,
|
69
|
+
},
|
70
|
+
"vcf_sv_mt": {
|
71
|
+
"category": "sv",
|
72
|
+
"variant_type": "clinical",
|
73
|
+
"load_priority": 40,
|
74
|
+
},
|
75
|
+
"vcf_sv_research": {
|
76
|
+
"category": "sv",
|
77
|
+
"variant_type": "research",
|
78
|
+
"load_priority": 145,
|
79
|
+
},
|
80
|
+
"vcf_sv_research_mt": {
|
81
|
+
"category": "sv",
|
82
|
+
"variant_type": "research",
|
83
|
+
"load_priority": 140,
|
84
|
+
},
|
85
|
+
"vcf_str": {
|
86
|
+
"category": "str",
|
87
|
+
"variant_type": "clinical",
|
88
|
+
"load_priority": 50,
|
89
|
+
},
|
21
90
|
}
|
scout/export/exon.py
CHANGED
@@ -11,6 +11,7 @@ head develop/mip_references/grch37_scout_exons_-2017-01-.bed
|
|
11
11
|
7 65413656 65413769 7-65413658-65413767 NM_173517 21492 VKORC1L1
|
12
12
|
5 159776172 159776790 5-159776174-159776788 NM_031908 14325 C1QTNF2
|
13
13
|
"""
|
14
|
+
|
14
15
|
import logging
|
15
16
|
|
16
17
|
LOG = logging.getLogger(__name__)
|
scout/load/all.py
CHANGED
@@ -3,6 +3,7 @@ import logging
|
|
3
3
|
|
4
4
|
from scout.constants import FILE_TYPE_MAP
|
5
5
|
from scout.exceptions.config import ConfigError
|
6
|
+
from scout.utils.sort import get_load_priority
|
6
7
|
|
7
8
|
LOG = logging.getLogger(__name__)
|
8
9
|
|
@@ -62,7 +63,10 @@ def load_region(adapter, case_id, hgnc_id=None, chrom=None, start=None, end=None
|
|
62
63
|
(FILE_TYPE_MAP[file_type]["variant_type"], FILE_TYPE_MAP[file_type]["category"])
|
63
64
|
)
|
64
65
|
|
65
|
-
for variant_type, category in
|
66
|
+
for variant_type, category in sorted(
|
67
|
+
case_file_types,
|
68
|
+
key=lambda tup: get_load_priority(variant_type=tup[0], category=tup[1]),
|
69
|
+
):
|
66
70
|
if variant_type == "research" and not case_obj["is_research"]:
|
67
71
|
continue
|
68
72
|
|
scout/load/hgnc_gene.py
CHANGED
@@ -91,7 +91,7 @@ def load_hgnc_genes(
|
|
91
91
|
gene_objects.append(gene_obj)
|
92
92
|
|
93
93
|
LOG.info("Nr of genes without coordinates in build %s: %s", build, non_existing)
|
94
|
-
LOG.info(f"Loading {len(gene_objects)}
|
94
|
+
LOG.info(f"Loading {len(gene_objects)} genes into the database")
|
95
95
|
adapter.load_hgnc_bulk(gene_objects)
|
96
96
|
|
97
97
|
LOG.info("Loading done. %s genes loaded", len(gene_objects))
|