scout-browser 4.84__py3-none-any.whl → 4.85__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/cytoband.py +13 -0
- scout/adapter/mongo/hgnc.py +1 -1
- scout/commands/update/genes.py +9 -13
- scout/load/hgnc_gene.py +39 -6
- scout/parse/hgnc.py +1 -0
- scout/parse/variant/transcript.py +1 -1
- scout/parse/variant/variant.py +10 -4
- scout/server/blueprints/cases/controllers.py +15 -1
- scout/server/blueprints/cases/templates/cases/case.html +1 -1
- scout/server/blueprints/cases/templates/cases/collapsible_actionbar.html +1 -1
- scout/server/blueprints/cases/templates/cases/gene_panel.html +27 -41
- scout/server/blueprints/cases/templates/cases/utils.html +1 -1
- scout/server/templates/utils.html +1 -1
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/METADATA +2 -2
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/RECORD +20 -20
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/LICENSE +0 -0
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/WHEEL +0 -0
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/entry_points.txt +0 -0
- {scout_browser-4.84.dist-info → scout_browser-4.85.dist-info}/top_level.txt +0 -0
scout/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "4.
|
1
|
+
__version__ = "4.85"
|
scout/adapter/mongo/cytoband.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
import logging
|
3
|
+
from typing import Dict
|
3
4
|
|
4
5
|
import pymongo
|
5
6
|
|
@@ -20,6 +21,18 @@ class CytobandHandler(object):
|
|
20
21
|
result = self.cytoband_collection.insert_many(cytobands)
|
21
22
|
LOG.debug(f"Number of inserted documents:{len(result.inserted_ids)}")
|
22
23
|
|
24
|
+
def cytoband_to_coordinates(self, build: str) -> Dict[str, dict]:
|
25
|
+
"""Returns a dictionary with cytoband name as key and its coordinates as value."""
|
26
|
+
cytobands = self.cytoband_collection.find({"build": build})
|
27
|
+
return {
|
28
|
+
"".join([cytoband["chrom"], cytoband["band"]]): {
|
29
|
+
"chromosome": cytoband["chrom"],
|
30
|
+
"start": int(cytoband["start"]),
|
31
|
+
"stop": int(cytoband["stop"]),
|
32
|
+
}
|
33
|
+
for cytoband in cytobands
|
34
|
+
}
|
35
|
+
|
23
36
|
def cytoband_by_chrom(self, build="37"):
|
24
37
|
"""Returns a dictionary of cytobands with chromosomes as keys
|
25
38
|
|
scout/adapter/mongo/hgnc.py
CHANGED
@@ -405,7 +405,7 @@ class GeneHandler(object):
|
|
405
405
|
add_transcripts = True
|
406
406
|
|
407
407
|
for gene_obj in self.all_genes(build=build, add_transcripts=add_transcripts):
|
408
|
-
ensg_id = gene_obj
|
408
|
+
ensg_id = gene_obj.get("ensembl_id")
|
409
409
|
hgnc_id = gene_obj["hgnc_id"]
|
410
410
|
transcript_objs = gene_obj.get("ens_transcripts")
|
411
411
|
if id_transcripts and transcript_objs:
|
scout/commands/update/genes.py
CHANGED
@@ -30,6 +30,9 @@ from scout.load import load_hgnc_genes, load_transcripts
|
|
30
30
|
from scout.server.extensions import store
|
31
31
|
from scout.utils.handle import get_file_handle
|
32
32
|
|
33
|
+
ENSEMBL_GENE_RESOURCES = {"37": "ensembl_genes_37", "38": "ensembl_genes_38"}
|
34
|
+
ENSEMBL_TX_RESOURCES = {"37": "ensembl_transcripts_37", "38": "ensembl_transcripts_38"}
|
35
|
+
|
33
36
|
LOG = logging.getLogger(__name__)
|
34
37
|
|
35
38
|
|
@@ -137,7 +140,7 @@ def genes(build, downloads_folder, api_key):
|
|
137
140
|
except Exception as ex:
|
138
141
|
LOG.error(ex)
|
139
142
|
fetch_downloaded_resources(resources, tempdir, builds)
|
140
|
-
else: # If resources have been
|
143
|
+
else: # If resources have been previously downloaded, read those file and return their lines
|
141
144
|
fetch_downloaded_resources(resources, downloads_folder, builds)
|
142
145
|
|
143
146
|
# Load genes and transcripts info
|
@@ -147,11 +150,7 @@ def genes(build, downloads_folder, api_key):
|
|
147
150
|
LOG.warning("Dropping all transcript information")
|
148
151
|
adapter.drop_transcripts(genome_build)
|
149
152
|
|
150
|
-
ensembl_gene_res = (
|
151
|
-
resources.get("ensembl_genes_37")
|
152
|
-
if genome_build == "37"
|
153
|
-
else resources.get("ensembl_genes_38")
|
154
|
-
) # It will be none if everything needs to be downloaded
|
153
|
+
ensembl_gene_res = resources.get(ENSEMBL_GENE_RESOURCES[genome_build])
|
155
154
|
|
156
155
|
# Load the genes
|
157
156
|
hgnc_genes = load_hgnc_genes(
|
@@ -167,15 +166,12 @@ def genes(build, downloads_folder, api_key):
|
|
167
166
|
|
168
167
|
ensembl_genes_dict = {}
|
169
168
|
for gene_obj in hgnc_genes:
|
170
|
-
|
171
|
-
|
169
|
+
if gene_obj.get("ensembl_id"):
|
170
|
+
ensembl_id = gene_obj["ensembl_id"]
|
171
|
+
ensembl_genes_dict[ensembl_id] = gene_obj
|
172
172
|
|
173
173
|
# Load the transcripts
|
174
|
-
ensembl_tx_res = (
|
175
|
-
resources.get("ensembl_transcripts_37")
|
176
|
-
if genome_build == "37"
|
177
|
-
else resources.get("ensembl_transcripts_38")
|
178
|
-
) # It will be none if everything needs to be downloaded
|
174
|
+
ensembl_tx_res = resources.get(ENSEMBL_TX_RESOURCES[genome_build])
|
179
175
|
|
180
176
|
load_transcripts(adapter, ensembl_tx_res, genome_build, ensembl_genes_dict)
|
181
177
|
|
scout/load/hgnc_gene.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
import logging
|
3
|
+
from typing import Dict
|
3
4
|
|
4
5
|
from click import progressbar
|
5
6
|
|
@@ -16,6 +17,22 @@ from scout.utils.scout_requests import (
|
|
16
17
|
LOG = logging.getLogger(__name__)
|
17
18
|
|
18
19
|
|
20
|
+
def set_missing_gene_coordinates(gene_data: dict, cytoband_coords: Dict[str, dict]):
|
21
|
+
"""Attempt at collecting gene coordinates from cytoband for genes missing Ensembl ID."""
|
22
|
+
|
23
|
+
if gene_data.get("ensembl_gene_id") not in [
|
24
|
+
"",
|
25
|
+
None,
|
26
|
+
]: # Coordinates are present, since they're collected from the Ensembl file
|
27
|
+
return
|
28
|
+
gene_data["ensembl_gene_id"] = None
|
29
|
+
cytoband_coord: dict = cytoband_coords.get(gene_data["location"])
|
30
|
+
if cytoband_coord:
|
31
|
+
gene_data["chromosome"]: str = cytoband_coord["chromosome"]
|
32
|
+
gene_data["start"]: int = cytoband_coord["start"]
|
33
|
+
gene_data["end"]: int = cytoband_coord["stop"]
|
34
|
+
|
35
|
+
|
19
36
|
def load_hgnc_genes(
|
20
37
|
adapter,
|
21
38
|
genes=None,
|
@@ -36,7 +53,7 @@ def load_hgnc_genes(
|
|
36
53
|
Args:
|
37
54
|
adapter(scout.adapter.MongoAdapter)
|
38
55
|
genes(dict): If genes are already parsed
|
39
|
-
ensembl_lines(iterable(str)): Lines
|
56
|
+
ensembl_lines(iterable(str)): Lines formatted with ensembl gene information
|
40
57
|
hgnc_lines(iterable(str)): Lines with gene information from genenames.org
|
41
58
|
exac_lines(iterable(str)): Lines with information pLi-scores from ExAC
|
42
59
|
mim2gene(iterable(str)): Lines with map from omim id to gene symbol
|
@@ -78,20 +95,36 @@ def load_hgnc_genes(
|
|
78
95
|
genemap_lines=genemap_lines,
|
79
96
|
)
|
80
97
|
|
81
|
-
|
98
|
+
without_coords = 0
|
82
99
|
nr_genes = len(genes)
|
83
100
|
LOG.info(f"Building info for {nr_genes} genes")
|
101
|
+
|
102
|
+
cytoband_coords: Dict[str, dict] = adapter.cytoband_to_coordinates(build=build)
|
103
|
+
|
84
104
|
with progressbar(genes.values(), label="Building genes", length=nr_genes) as bar:
|
85
105
|
for gene_data in bar:
|
106
|
+
set_missing_gene_coordinates(gene_data=gene_data, cytoband_coords=cytoband_coords)
|
107
|
+
|
86
108
|
if not gene_data.get("chromosome"):
|
87
|
-
|
109
|
+
without_coords += 1
|
88
110
|
continue
|
111
|
+
gene_obj = build_hgnc_gene(
|
112
|
+
gene_data,
|
113
|
+
build=build,
|
114
|
+
)
|
89
115
|
|
90
|
-
gene_obj
|
91
|
-
|
116
|
+
if gene_obj:
|
117
|
+
gene_objects.append(gene_obj)
|
118
|
+
else:
|
119
|
+
without_coords += 1
|
92
120
|
|
93
|
-
LOG.info(
|
121
|
+
LOG.info(
|
122
|
+
"Nr of genes without coordinates in build %s and therefore skipped: %s",
|
123
|
+
build,
|
124
|
+
without_coords,
|
125
|
+
)
|
94
126
|
LOG.info(f"Loading {len(gene_objects)} genes into the database")
|
127
|
+
|
95
128
|
adapter.load_hgnc_bulk(gene_objects)
|
96
129
|
|
97
130
|
LOG.info("Loading done. %s genes loaded", len(gene_objects))
|
scout/parse/hgnc.py
CHANGED
@@ -24,6 +24,7 @@ def parse_hgnc_line(line, header):
|
|
24
24
|
hgnc_gene["hgnc_symbol"] = hgnc_symbol
|
25
25
|
hgnc_gene["hgnc_id"] = int(raw_info["hgnc_id"].split(":")[-1])
|
26
26
|
hgnc_gene["description"] = raw_info["name"]
|
27
|
+
hgnc_gene["location"] = raw_info["location"] # cytoband
|
27
28
|
|
28
29
|
# We want to have the current symbol as an alias
|
29
30
|
aliases = set([hgnc_symbol, hgnc_symbol.upper()])
|
scout/parse/variant/variant.py
CHANGED
@@ -231,10 +231,7 @@ def parse_variant(
|
|
231
231
|
parsed_variant["revel_score"] = parsed_transcripts[0].get(
|
232
232
|
"revel_rankscore"
|
233
233
|
) # This is actually the value of REVEL_rankscore
|
234
|
-
|
235
|
-
parsed_variant["revel"] = parsed_transcripts[0].get(
|
236
|
-
"revel_raw_score"
|
237
|
-
) # This is actually the value of REVEL_score
|
234
|
+
parsed_variant["revel"] = get_highest_revel_score(parsed_transcripts)
|
238
235
|
|
239
236
|
###################### Add conservation ######################
|
240
237
|
parsed_variant["conservation"] = parse_conservations(variant, parsed_transcripts)
|
@@ -261,6 +258,15 @@ def parse_variant(
|
|
261
258
|
return parsed_variant
|
262
259
|
|
263
260
|
|
261
|
+
def get_highest_revel_score(parsed_transcripts: List[dict]) -> Optional[float]:
|
262
|
+
"""Retrieve the highest REVEL_score value from parsed variant transcripts."""
|
263
|
+
tx_revel_scores: List(float) = [
|
264
|
+
tx.get("revel_raw_score") for tx in parsed_transcripts if tx.get("revel_raw_score") != None
|
265
|
+
]
|
266
|
+
if tx_revel_scores:
|
267
|
+
return max(tx_revel_scores)
|
268
|
+
|
269
|
+
|
264
270
|
def get_genmod_key(case):
|
265
271
|
"""Gen genmod key
|
266
272
|
|
@@ -64,6 +64,7 @@ JSON_HEADERS = {
|
|
64
64
|
COVERAGE_REPORT_TIMEOUT = 20
|
65
65
|
|
66
66
|
PANEL_PROJECTION = {"version": 1, "display_name": 1, "genes": 1}
|
67
|
+
PANEL_HIDDEN_PROJECTION = {"version": 1, "display_name": 1, "hidden": 1}
|
67
68
|
|
68
69
|
|
69
70
|
def phenomizer_diseases(hpo_ids, case_obj, p_value_treshold=1):
|
@@ -339,6 +340,8 @@ def case(
|
|
339
340
|
|
340
341
|
case_obj["default_genes"] = _get_default_panel_genes(store, case_obj)
|
341
342
|
|
343
|
+
_set_panel_removed(store, case_obj)
|
344
|
+
|
342
345
|
for hpo_term in itertools.chain(
|
343
346
|
case_obj.get("phenotype_groups") or [], case_obj.get("phenotype_terms") or []
|
344
347
|
):
|
@@ -479,6 +482,18 @@ def _limit_genes_on_default_panels(default_genes: list, limit_genes: list) -> li
|
|
479
482
|
return list(default_genes_set.intersection(limit_genes_set))
|
480
483
|
|
481
484
|
|
485
|
+
def _set_panel_removed(store: MongoAdapter, case_obj: dict) -> list:
|
486
|
+
"""Flag panel on list removed if the latest panel version is marked hidden."""
|
487
|
+
|
488
|
+
for panel_info in case_obj.get("panels", []):
|
489
|
+
latest_panel = store.gene_panel(
|
490
|
+
panel_info["panel_name"], projection=PANEL_HIDDEN_PROJECTION
|
491
|
+
)
|
492
|
+
panel_info["removed"] = (
|
493
|
+
latest_panel.get("hidden", False) if latest_panel is not None else False
|
494
|
+
)
|
495
|
+
|
496
|
+
|
482
497
|
def _get_default_panel_genes(store: MongoAdapter, case_obj: dict) -> list:
|
483
498
|
"""Get unique genes on case default panels.
|
484
499
|
|
@@ -510,7 +525,6 @@ def _get_default_panel_genes(store: MongoAdapter, case_obj: dict) -> list:
|
|
510
525
|
projection=PANEL_PROJECTION,
|
511
526
|
)
|
512
527
|
latest_panel = store.gene_panel(panel_name, projection=PANEL_PROJECTION)
|
513
|
-
panel_info["removed"] = False if latest_panel is None else latest_panel.get("hidden", False)
|
514
528
|
if not panel_obj:
|
515
529
|
panel_obj = latest_panel
|
516
530
|
if not panel_obj:
|
@@ -352,7 +352,7 @@
|
|
352
352
|
<a href="{{ url_for('cases.case', institute_id=grouped_case.owner, case_name=grouped_case.display_name) }}">{{ grouped_case.display_name }}</a>
|
353
353
|
|
354
354
|
<a href="{{ url_for('cases.remove_case_group', institute_id=institute._id, case_name=grouped_case.display_name, case_group=group_id) }}" class="btn btn-link btn-sm">
|
355
|
-
<span class="fa fa-
|
355
|
+
<span class="fa fa-times text-dark"></span></a>
|
356
356
|
|
357
357
|
</div>
|
358
358
|
{% endfor %}
|
@@ -247,7 +247,7 @@
|
|
247
247
|
{% else %}
|
248
248
|
<button type="submit" name="action" value="DELETE" class="btn btn-warning btn-xs form-control">
|
249
249
|
{% endif %}
|
250
|
-
<span class="fa fa-
|
250
|
+
<span class="fa fa-times"></span>
|
251
251
|
{{ user.name }}
|
252
252
|
</button>
|
253
253
|
</form>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<thead class="table-light thead">
|
10
10
|
<tr style="cursor: pointer; white-space: nowrap">
|
11
11
|
<th>Panel <i class="fas fa-sort" data-bs-toggle="tooltip" title="Sort by gene panel name"></i></th>
|
12
|
-
<th
|
12
|
+
<th>Default <i class="fas fa-sort" data-bs-toggle="tooltip" title="Sort by if panel is default"></i></th>
|
13
13
|
<th>Version <i class="fas fa-sort" data-bs-toggle="tooltip" title="Sort by panel version"></i></th>
|
14
14
|
<th>Genes <i class="fas fa-sort" data-bs-toggle="tooltip" title="Sort by number of genes"></i></th>
|
15
15
|
</tr>
|
@@ -20,10 +20,10 @@
|
|
20
20
|
<td>
|
21
21
|
<a {% if panel.is_default %} class="text-white" {% endif %} href="{{ url_for('panels.panel', panel_id=panel.panel_id, case_id=case._id, institute_id=institute._id) }}">
|
22
22
|
{{ panel.display_name|truncate(30, True) }}
|
23
|
-
{% if panel.removed %}
|
24
|
-
<span class="badge bg-danger">Removed</span>
|
25
|
-
{% endif %}
|
26
23
|
</a>
|
24
|
+
{% if panel.removed %}
|
25
|
+
<span class="badge bg-danger">Removed</span>
|
26
|
+
{% endif %}
|
27
27
|
</td>
|
28
28
|
<td >
|
29
29
|
{% if panel.is_default %}
|
@@ -35,53 +35,39 @@
|
|
35
35
|
</tr>
|
36
36
|
{% else %}
|
37
37
|
<tr>
|
38
|
-
<td colspan="
|
38
|
+
<td colspan="4">No panels linked to case</td>
|
39
39
|
</tr>
|
40
40
|
{% endfor %}
|
41
41
|
</tbody>
|
42
42
|
</table>
|
43
43
|
</div>
|
44
|
-
|
45
|
-
|
46
|
-
<div class="row">
|
47
|
-
<label>Change default gene panels</label>
|
48
|
-
</div>
|
49
|
-
<div class="row">
|
50
|
-
<div class="col-8">
|
51
|
-
<select name="panel_ids" class="selectpicker" multiple="multiple" data-style="btn-secondary">
|
52
|
-
{% for panel in case.panels %}
|
53
|
-
<option value="{{ panel.panel_id }}" {% if panel.is_default %} selected {% endif %}>{{ panel.display_name }}</option>
|
54
|
-
{% endfor %}
|
55
|
-
</select>
|
56
|
-
</div>
|
57
|
-
<div class="col-4">
|
58
|
-
<button class="btn btn-secondary form-control">Save</button>
|
59
|
-
</div>
|
60
|
-
</div>
|
61
|
-
</form>
|
62
|
-
</div>
|
44
|
+
{{ change_default_panels(case, institute) }}
|
45
|
+
|
63
46
|
</div>
|
64
47
|
{% endmacro %}
|
65
48
|
|
66
49
|
{% macro change_default_panels(case, institute) %}
|
67
|
-
<div class="card
|
68
|
-
<
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
</
|
50
|
+
<div class="card-body">
|
51
|
+
<form action="{{ url_for('cases.default_panels', institute_id=institute._id, case_name=case.display_name) }}" method="POST">
|
52
|
+
<div class="row">
|
53
|
+
<label>Change default gene panels</label>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="row">
|
57
|
+
<div class="col-8">
|
58
|
+
<select name="panel_ids" class="selectpicker" multiple="multiple" data-style="btn-secondary">
|
59
|
+
{% for panel in case.panels|sort(attribute='display_name') %}
|
60
|
+
<option value="{{ panel.panel_id }}" {% if panel.is_default %} selected {% endif %}>
|
61
|
+
{{ panel.display_name }} {% if panel.removed %} (Removed) {% endif %}
|
62
|
+
</option>
|
63
|
+
{% endfor %}
|
64
|
+
</select>
|
82
65
|
</div>
|
83
|
-
|
84
|
-
|
66
|
+
<div class="col-4">
|
67
|
+
<button class="btn btn-secondary form-control">Save</button>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
</form>
|
85
71
|
</div>
|
86
72
|
{% endmacro %}
|
87
73
|
|
@@ -145,7 +145,7 @@
|
|
145
145
|
<span class='badge bg-secondary'>edited</span>
|
146
146
|
{% endif %}
|
147
147
|
{% if comment.user_id == current_user.email %}
|
148
|
-
<button class="btn btn-link btn-sm" type="submit" name="remove"><i class="fa fa-
|
148
|
+
<button class="btn btn-link btn-sm" type="submit" name="remove"><i class="fa fa-times"></i></button>
|
149
149
|
<button class="btn btn-link btn-sm" type="button" data-bs-toggle="modal" data-bs-target="#editComment_{{index}}"><i class="fa fa-edit"></i></button>
|
150
150
|
{% endif %}
|
151
151
|
</small>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: scout-browser
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.85
|
4
4
|
Summary: Clinical DNA variant visualizer and browser.
|
5
5
|
Home-page: https://github.com/Clinical-Genomics/scout
|
6
6
|
Author: Måns Magnusson
|
@@ -15,7 +15,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.6
|
16
16
|
Description-Content-Type: text/markdown
|
17
17
|
License-File: LICENSE
|
18
|
-
Requires-Dist: werkzeug
|
18
|
+
Requires-Dist: werkzeug
|
19
19
|
Requires-Dist: Flask >=2.0
|
20
20
|
Requires-Dist: Flask-Bootstrap
|
21
21
|
Requires-Dist: Flask-CORS
|
@@ -1,5 +1,5 @@
|
|
1
1
|
scout/__init__.py,sha256=Z4liXvmEcLkC67ElsWvYHfemPKdWgWI5O6MB6XlDM8M,232
|
2
|
-
scout/__version__.py,sha256=
|
2
|
+
scout/__version__.py,sha256=0tKXeulzMZX3om2NQDhtJ8c6Oms2h9SN1SxrM5kH4Q4,21
|
3
3
|
scout/adapter/__init__.py,sha256=-iX_hx2NI1EMAqX0pMd5_90Nnd9uvIMxv9EbefYBzsc,86
|
4
4
|
scout/adapter/client.py,sha256=IuajRsEwTG41ZP14X09Q1Cj94zIgmIvUtlXfcAFn0EA,1513
|
5
5
|
scout/adapter/mongo/__init__.py,sha256=NdHYCUXWUAuX5cUS3-6HCws2hW9uoGep8i0SC-oJd3k,31
|
@@ -9,11 +9,11 @@ scout/adapter/mongo/case.py,sha256=wXYmyv32gvnCGHgqys3ZGG3gAUyf_buC8LfSzDt4TFo,5
|
|
9
9
|
scout/adapter/mongo/case_events.py,sha256=slHR4XJF9vRuEbuInJKMMAImLF8m7tHWVfGP42fbXr0,26859
|
10
10
|
scout/adapter/mongo/case_group.py,sha256=tG8DuO0rNYepV4k0yCGPqssODErc0HMsAypg3mfhcV0,1575
|
11
11
|
scout/adapter/mongo/clinvar.py,sha256=tczC39O3DFDkYgjt2RDgkkG-x1Mvx_99Hw7dAbIQ5gk,19838
|
12
|
-
scout/adapter/mongo/cytoband.py,sha256=
|
12
|
+
scout/adapter/mongo/cytoband.py,sha256=2NoIAoQ7RPqcipiSymD2O9qH8lXscP3T5ejquOrD7uQ,2622
|
13
13
|
scout/adapter/mongo/disease_terms.py,sha256=4qcQRLuP5xn_RkB2RlNtwCrONmDuWwdlngZrj87BUEo,5637
|
14
14
|
scout/adapter/mongo/event.py,sha256=NnURFhS5odOXk7So_gGMHmALPAJM0PWzESI4FC06azE,19842
|
15
15
|
scout/adapter/mongo/filter.py,sha256=GoPqMDqteE1pDiVfpUP8xxT_1A8s7S4ByITCJGdesok,7570
|
16
|
-
scout/adapter/mongo/hgnc.py,sha256=
|
16
|
+
scout/adapter/mongo/hgnc.py,sha256=Zcnf_kKJqrJAf62tUFODhL8OQUb695XnL_rzk4D9nes,16411
|
17
17
|
scout/adapter/mongo/hpo.py,sha256=ps2Pix3sGeea7DenboZVP5j7Vh9WAgX3-sgpbAj0Eck,6871
|
18
18
|
scout/adapter/mongo/index.py,sha256=TZPVv6xBWsEtZpBUWp5uhjuPjQMfVss4lZZju49g1Lw,3577
|
19
19
|
scout/adapter/mongo/institute.py,sha256=GQmMKb_VzsvWwadp6gXHlSSpcG5ovF1ozdTzvpTFLpA,7025
|
@@ -99,7 +99,7 @@ scout/commands/update/base.py,sha256=XxxBGzn9JdFfk39jsZbU5eAZhE41MLq73WwLqa_u4Rc
|
|
99
99
|
scout/commands/update/case.py,sha256=q7gjMS4izlrV0LghfTM9GiJeXI0K4qtmO62TqfTqizw,5822
|
100
100
|
scout/commands/update/compounds.py,sha256=vwCtb6045tGovKWHqY_uL8w1l9rZ_Hxlt0gUU0cKXUk,753
|
101
101
|
scout/commands/update/disease.py,sha256=AajPLoEtd9YeU3jf7S7ZQRs3_o1H3GSxHsST_sVaIZQ,3846
|
102
|
-
scout/commands/update/genes.py,sha256=
|
102
|
+
scout/commands/update/genes.py,sha256=GhYIn2zWrAZMhdJjzzrpo8AquFqr7XOvosOk8lg4Zwk,6989
|
103
103
|
scout/commands/update/hpo.py,sha256=eyCuUlUwPmyP0oLh1olXhdqInlUXDdLe8ylgTlHWi-g,1339
|
104
104
|
scout/commands/update/individual.py,sha256=lwVQcKCZj5VxUSO8CcBUsvVRl3ZHgJVe4AE9pcJS7ys,4007
|
105
105
|
scout/commands/update/institute.py,sha256=ms8mmTGfCXqxeh_vSB1cdNDGrdHoSSgh9ryhB5GrJQc,1727
|
@@ -364,7 +364,7 @@ scout/load/all.py,sha256=F_eb7lWM3wYASEL06qDeNczQTM3QR9Zz76nLgchaN5I,3699
|
|
364
364
|
scout/load/cytoband.py,sha256=vPU8oQm31WMcnaG9QG2le9pe_8g70O1S0q1Ljj3Ce84,1356
|
365
365
|
scout/load/disease.py,sha256=eZ-RDTtfO6-YCk0tCHuhCWxw1FSCwHNZEemWXCC4P_w,2747
|
366
366
|
scout/load/exon.py,sha256=ONaWJ9EfbhGV8KGXxwlq_jYCoU-JkBpv4r9zDaCjtls,2070
|
367
|
-
scout/load/hgnc_gene.py,sha256=
|
367
|
+
scout/load/hgnc_gene.py,sha256=GcSQ01CioYIshAzXAv4msIGDPjTjGBBPBnLX2GvaZJ4,4507
|
368
368
|
scout/load/hpo.py,sha256=ZWYjV9j6OfpI-ZZuhTQVEs_xgLa7ST2KuvYLW6ku0PY,2474
|
369
369
|
scout/load/institute.py,sha256=etmZ0CZRHOVi3f9R-wn5BK1pZPhtZwq2QYbh2RXXxDc,625
|
370
370
|
scout/load/panel.py,sha256=JQqkyUdpvhFnW81n8Sq-iPahDcm1hGBzLfrwUcVqt4k,9446
|
@@ -399,7 +399,7 @@ scout/parse/cytoband.py,sha256=7flY3b_wegupHHBLRcs4KyM1ns-uzuTfVHm4CycnupE,1055
|
|
399
399
|
scout/parse/disease_terms.py,sha256=-JIm4GWEvqg9nmWehK18mlIQ-N5nZhT2u5pbfDRXoxE,7437
|
400
400
|
scout/parse/ensembl.py,sha256=nnqOVtLgWh9wbtHnzGIidnNIvRoOp2bTct5OuAFSSB0,10618
|
401
401
|
scout/parse/exac.py,sha256=VbahYYoMl8RkffChAhKnrVOS6fzQdDKRkPMPZnKnZcQ,1972
|
402
|
-
scout/parse/hgnc.py,sha256=
|
402
|
+
scout/parse/hgnc.py,sha256=92ro9ilOLi96AmlbXLItzDKPjJjgUd8iqzQbsy5AOeo,3250
|
403
403
|
scout/parse/hpo_mappings.py,sha256=UJY38iLmpJFnZ9FuRaNIGhNQnTx7_WASxr9mlEnhvHE,2637
|
404
404
|
scout/parse/hpo_terms.py,sha256=ZJCKFD0rV3jiCuoI8Gm1WNTiaOSRRoKOhZ1bYnqwY6I,5732
|
405
405
|
scout/parse/matchmaker.py,sha256=5e9NCFQ2rKXNCJTW-ThXoEylEPl3H41cCfQzPATQ2QM,9524
|
@@ -424,8 +424,8 @@ scout/parse/variant/ids.py,sha256=N_2m7Hgdh7asHdWU4k2dMySsutxp16ODRE_OHy_Niwg,26
|
|
424
424
|
scout/parse/variant/managed_variant.py,sha256=qwmi2sPLwGZM5izSsMpvhQ9vfMHREiwiIzjDCuOdqQo,2288
|
425
425
|
scout/parse/variant/models.py,sha256=NrqLXu7PxpIQ0NmjGRIEk4vS_y972VPiexLsZCZpOn0,507
|
426
426
|
scout/parse/variant/rank_score.py,sha256=ipFxCTsQHMqObUbzLJlDAKUb3_lk_sqEYzH52myZVVk,486
|
427
|
-
scout/parse/variant/transcript.py,sha256=
|
428
|
-
scout/parse/variant/variant.py,sha256=
|
427
|
+
scout/parse/variant/transcript.py,sha256=0kxaXWrNAvSiU76ZdIl9PQFzUyj6go6u3BnNhnTk8pg,13359
|
428
|
+
scout/parse/variant/variant.py,sha256=CTCaE07GqDg52ZhUPLpEOoEYLgr4y1mPtvRvAsxt5IM,24057
|
429
429
|
scout/resources/__init__.py,sha256=i9UVG651subgmOZ-Gm-JKPsXBqr5-50QUDfSpbwmwIw,443
|
430
430
|
scout/resources/cytoBand_hg19.txt.gz,sha256=pheUD5b9NlVuvwwnbKwDc2FG80Yg70gvPxVXP-Sqd3k,6147
|
431
431
|
scout/resources/cytoBand_hg38.txt.gz,sha256=sqSVmvPlktQ-0hTiTapJM-5UgyV6xDoYZuTF0kPuETs,6105
|
@@ -446,27 +446,27 @@ scout/server/blueprints/alignviewers/templates/alignviewers/utils.html,sha256=ni
|
|
446
446
|
scout/server/blueprints/api/__init__.py,sha256=HR6HjS7ot1K_8Lt5eQdNT154z_FCdHGSigy8r2LpNCI,26
|
447
447
|
scout/server/blueprints/api/views.py,sha256=pbl78wfhrm1T8JmiJDYF3BbTbfFrlF-hQRbuv2GWI0s,3729
|
448
448
|
scout/server/blueprints/cases/__init__.py,sha256=_c17kPFITFYcIVphF4V9bf0PZBer8bU3rtVWQnljKDU,52
|
449
|
-
scout/server/blueprints/cases/controllers.py,sha256=
|
449
|
+
scout/server/blueprints/cases/controllers.py,sha256=lVBZy7udshXltMZtjkQWP-0ypNHOOagi_Tciqq5PMJ8,54666
|
450
450
|
scout/server/blueprints/cases/views.py,sha256=ZfuDfkcOiw7PHUr68mowJyYxUb6_gQObR488mhP6l78,42841
|
451
451
|
scout/server/blueprints/cases/static/case_images.js,sha256=pb_gG7DNQc-1lADqSII8YvjBwmHyeQWYVtuu2jyrTlU,14997
|
452
452
|
scout/server/blueprints/cases/static/case_styles.css,sha256=2Pgc8pFf9DR5HM1sTdAjaRWhjL-bK5bsQnLpH54HZak,541
|
453
453
|
scout/server/blueprints/cases/static/edit_pedigree.js,sha256=ntC5fie7SsOYJau8qkke1UHxjiYWY_gBzWcIkGpdJUA,2978
|
454
454
|
scout/server/blueprints/cases/static/madeline.js,sha256=KHxKMBVlYVJODNu5QkY9hhsGkDJNoaCoCZZ0DRu0YN0,1175
|
455
|
-
scout/server/blueprints/cases/templates/cases/case.html,sha256=
|
455
|
+
scout/server/blueprints/cases/templates/cases/case.html,sha256=3wpGT8Vfoo3xBOVxf0N-SUpFoZwlHSf3K9vrlOxAL08,36560
|
456
456
|
scout/server/blueprints/cases/templates/cases/case_bionano.html,sha256=PLoRv7hDJcHwxhi-0hC9fQSZc7V_aUYHBhhQqcn_2G8,5946
|
457
457
|
scout/server/blueprints/cases/templates/cases/case_report.html,sha256=1tosH5xEl6CCZ1P6qlR5OKvWbAC5z3ewKL_JGdgPMBM,63635
|
458
458
|
scout/server/blueprints/cases/templates/cases/case_sma.html,sha256=SAcElb4kH05mkPdEdaEbed-vbgQQGfxioCoNZsHljDc,4962
|
459
459
|
scout/server/blueprints/cases/templates/cases/case_tabular_view.html,sha256=ko-LDUKmIoTazMZ2nFWvPEZsgObU07RwqIkDYFjokoY,4317
|
460
460
|
scout/server/blueprints/cases/templates/cases/chanjo2_form.html,sha256=5Wmk7DM8LI3MynqzxeTzAr_EoEBwVVo31djcI5ZlTdo,2164
|
461
|
-
scout/server/blueprints/cases/templates/cases/collapsible_actionbar.html,sha256=
|
461
|
+
scout/server/blueprints/cases/templates/cases/collapsible_actionbar.html,sha256=Az8Oq9ldGtT9snzeDxt1xC68Yp7fp4qZ1eDN7Gr9Wf4,29246
|
462
462
|
scout/server/blueprints/cases/templates/cases/diseases.html,sha256=ETTQI0Nrl_v86NoX9mFZcvWD-qM1IJoqPmHPWn__Grw,1677
|
463
|
-
scout/server/blueprints/cases/templates/cases/gene_panel.html,sha256=
|
463
|
+
scout/server/blueprints/cases/templates/cases/gene_panel.html,sha256=lkC_Piqaq-paYr4GUCwQaR8EgGOUXDMoW5sPLDW7yzg,11628
|
464
464
|
scout/server/blueprints/cases/templates/cases/index.html,sha256=oUmjFyUvwP4yo21CxcWy-6eepMFI65hpznMEpSEqKfM,1207
|
465
465
|
scout/server/blueprints/cases/templates/cases/individuals_table.html,sha256=DXE7gE0f81B5CxCV1e5bqWv27_HS-9-8nc0pcFkMoOg,11497
|
466
466
|
scout/server/blueprints/cases/templates/cases/institutes_sidebar.html,sha256=u0oPGHJ0ipZ1LkjHkbwlWfkUWc1h6XH1nh3tkbX17z0,4546
|
467
467
|
scout/server/blueprints/cases/templates/cases/matchmaker.html,sha256=1vwGBhM4HgvRMlO1foKBAwV-Wfvfs1MRvzteOETCZeM,13142
|
468
468
|
scout/server/blueprints/cases/templates/cases/phenotype.html,sha256=kBHD13SjBUGz0b79cQ2rfgdx3JPyJGDR38kscGZJai0,16120
|
469
|
-
scout/server/blueprints/cases/templates/cases/utils.html,sha256=
|
469
|
+
scout/server/blueprints/cases/templates/cases/utils.html,sha256=EwMPMGmHPuDRS3J88Ga4ram2y3fzopVs38HjnvZHfyM,34912
|
470
470
|
scout/server/blueprints/clinvar/__init__.py,sha256=BV3aH2AbiA2WWrUEMbGd0H9MefFd2eTsRE9ShywbzpI,30
|
471
471
|
scout/server/blueprints/clinvar/controllers.py,sha256=TEOdUTVYI-I_lzts0F3M_TFPMkeeweWIUxWug5HUhDw,24059
|
472
472
|
scout/server/blueprints/clinvar/form.py,sha256=d0EBJouYsk-kIpGtAr_SfNCyLoBNchfLt25uFR9HxO0,5155
|
@@ -639,7 +639,7 @@ scout/server/static/robots.txt,sha256=fFX0beQN4x3mzR3evnZjrOUYOTNkezYAwqMowTUpmx
|
|
639
639
|
scout/server/templates/bootstrap_global.html,sha256=6e09Qyn3pc5zbE82Gacyye9qL5cMbrfOebMSjU9rqqA,2894
|
640
640
|
scout/server/templates/layout.html,sha256=-uhRxFA89L0gocv8sPLcODUHmWLNuV6xsjB34Zjq-8o,4635
|
641
641
|
scout/server/templates/report_base.html,sha256=PZOqFZRLtbe4PZ7lkVc9LP1O-yh7v3_EzOohRE9Ix4U,1252
|
642
|
-
scout/server/templates/utils.html,sha256=
|
642
|
+
scout/server/templates/utils.html,sha256=aFxvkFYA_4S-LBkMGXFWbycLNFZ6QqtO1088bru3i9Y,12940
|
643
643
|
scout/server/translations/sv/LC_MESSAGES/messages.mo,sha256=eI53pCtlYj1MXduDicMZRxBhgOV_TlmMUpH7IhncgDY,4452
|
644
644
|
scout/server/translations/sv/LC_MESSAGES/messages.po,sha256=Wp7Mx4LoiFNtzsV1tpAoWjMxYnq8SpfpU9a4XWJ7L6g,4531
|
645
645
|
scout/update/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -661,9 +661,9 @@ scout/utils/md5.py,sha256=KkgdxOf7xbF9AF40ZjQKCgWaxFWJ9tp9RKjd8SU6IoA,649
|
|
661
661
|
scout/utils/scout_requests.py,sha256=JjHOJW1XmenG05mNQ33kvOKq_IicveIfQMcPZeRcQdo,12856
|
662
662
|
scout/utils/sort.py,sha256=1AcbeZ6vdt_UXM3BLDBa3aQmN4qxrqtskxwD19oBhvw,756
|
663
663
|
scout/utils/track_resources.py,sha256=eUjSEe-Ff8BIb4BHPC_COkJocQO2PaWueiPz1GAuiwY,2614
|
664
|
-
scout_browser-4.
|
665
|
-
scout_browser-4.
|
666
|
-
scout_browser-4.
|
667
|
-
scout_browser-4.
|
668
|
-
scout_browser-4.
|
669
|
-
scout_browser-4.
|
664
|
+
scout_browser-4.85.dist-info/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
|
665
|
+
scout_browser-4.85.dist-info/METADATA,sha256=-rqJW4SQ9_0iU08QcC2w8nFzgK57yYUDkafy1fBNxHQ,14260
|
666
|
+
scout_browser-4.85.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
667
|
+
scout_browser-4.85.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
|
668
|
+
scout_browser-4.85.dist-info/top_level.txt,sha256=qM75h71bztMaLYsxn1up4c_n2rjc_ZnyaW6Q0K5uOXc,6
|
669
|
+
scout_browser-4.85.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|