scout-browser 4.91.2__py3-none-any.whl → 4.92__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/query.py +13 -16
- scout/commands/delete/delete_command.py +27 -4
- scout/parse/panelapp.py +3 -1
- scout/server/blueprints/genes/templates/genes/gene.html +6 -0
- scout/server/extensions/panelapp_extension.py +2 -2
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/METADATA +1 -1
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/RECORD +12 -12
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/LICENSE +0 -0
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/WHEEL +0 -0
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/entry_points.txt +0 -0
- {scout_browser-4.91.2.dist-info → scout_browser-4.92.dist-info}/top_level.txt +0 -0
scout/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "4.
|
1
|
+
__version__ = "4.92"
|
scout/adapter/mongo/query.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import logging
|
2
2
|
import re
|
3
3
|
from datetime import datetime, timedelta
|
4
|
-
from typing import Optional, Union
|
4
|
+
from typing import List, Optional, Union
|
5
5
|
|
6
6
|
from scout.constants import (
|
7
7
|
CLINSIG_MAP,
|
@@ -19,23 +19,19 @@ LOG = logging.getLogger(__name__)
|
|
19
19
|
|
20
20
|
class QueryHandler(object):
|
21
21
|
def build_case_query(
|
22
|
-
self,
|
22
|
+
self,
|
23
|
+
case_ids: Optional[List[str]],
|
24
|
+
institute_id: Optional[List[str]],
|
25
|
+
status: Optional[List[str]],
|
26
|
+
older_than: Optional[int],
|
27
|
+
analysis_type: Optional[List[str]],
|
23
28
|
) -> dict:
|
24
|
-
"""Build case query based on case id, status and analysis date
|
25
|
-
|
26
|
-
Args:
|
27
|
-
case_id(str): id of a case
|
28
|
-
status(list): one or more case status
|
29
|
-
older_than(int): to select cases older than a number of months
|
30
|
-
case_ids(list): a list of case _ids
|
31
|
-
analysis_type(list): a list of type of analysis ["wgs", "wes", "panel"]
|
32
|
-
|
33
|
-
Returns:
|
34
|
-
case_query(dict): query dictionary
|
35
|
-
"""
|
29
|
+
"""Build case query based on case id, status and analysis date."""
|
36
30
|
case_query = {}
|
37
|
-
if
|
38
|
-
case_query["_id"] =
|
31
|
+
if case_ids:
|
32
|
+
case_query["_id"] = {"$in": case_ids}
|
33
|
+
if institute_id:
|
34
|
+
case_query["owner"] = institute_id
|
39
35
|
if analysis_type:
|
40
36
|
case_query["individuals.analysis_type"] = {"$in": analysis_type}
|
41
37
|
if older_than:
|
@@ -43,6 +39,7 @@ class QueryHandler(object):
|
|
43
39
|
case_query["analysis_date"] = {"$lt": older_than_date}
|
44
40
|
if status:
|
45
41
|
case_query["status"] = {"$in": list(status)}
|
42
|
+
|
46
43
|
return case_query
|
47
44
|
|
48
45
|
def delete_variants_query(
|
@@ -29,7 +29,14 @@ VARIANT_CATEGORIES = ["mei", "snv", "sv", "cancer", "cancer_sv", "str"]
|
|
29
29
|
|
30
30
|
@click.command("variants", short_help="Delete variants for one or more cases")
|
31
31
|
@click.option("-u", "--user", help="User running this command (email)", required=True)
|
32
|
-
@click.option("-c", "--case-id", help="Case id")
|
32
|
+
@click.option("-c", "--case-id", help="Case id", multiple=True)
|
33
|
+
@click.option(
|
34
|
+
"-f",
|
35
|
+
"--case-file",
|
36
|
+
help="Path to file containing list of case IDs",
|
37
|
+
type=click.Path(exists=True),
|
38
|
+
)
|
39
|
+
@click.option("-i", "--institute", help="Restrict to cases with specified institute ID")
|
33
40
|
@click.option(
|
34
41
|
"--status",
|
35
42
|
type=click.Choice(CASE_STATUSES),
|
@@ -42,7 +49,6 @@ VARIANT_CATEGORIES = ["mei", "snv", "sv", "cancer", "cancer_sv", "str"]
|
|
42
49
|
"--analysis-type",
|
43
50
|
type=click.Choice(["wgs", "wes", "panel"]),
|
44
51
|
multiple=True,
|
45
|
-
default=["wgs"],
|
46
52
|
help="Type of analysis",
|
47
53
|
)
|
48
54
|
@click.option("--rank-threshold", type=click.INT, default=5, help="With rank threshold lower than")
|
@@ -62,7 +68,9 @@ VARIANT_CATEGORIES = ["mei", "snv", "sv", "cancer", "cancer_sv", "str"]
|
|
62
68
|
@with_appcontext
|
63
69
|
def variants(
|
64
70
|
user: str,
|
65
|
-
case_id:
|
71
|
+
case_id: list,
|
72
|
+
case_file: str,
|
73
|
+
institute: str,
|
66
74
|
status: list,
|
67
75
|
older_than: int,
|
68
76
|
analysis_type: list,
|
@@ -73,6 +81,12 @@ def variants(
|
|
73
81
|
) -> None:
|
74
82
|
"""Delete variants for one or more cases"""
|
75
83
|
|
84
|
+
if case_file and case_id:
|
85
|
+
click.echo(
|
86
|
+
"You should specify either case ID (multiple times if needed) or the path to a text file containing a list of case IDs (one per line)."
|
87
|
+
)
|
88
|
+
return
|
89
|
+
|
76
90
|
user_obj = store.user(user)
|
77
91
|
if user_obj is None:
|
78
92
|
click.echo(f"Could not find a user with email '{user}' in database")
|
@@ -86,7 +100,16 @@ def variants(
|
|
86
100
|
else:
|
87
101
|
click.confirm("Variants are going to be deleted from database. Continue?", abort=True)
|
88
102
|
|
89
|
-
|
103
|
+
if case_file:
|
104
|
+
case_id = [line.strip() for line in open(case_file).readlines() if line.strip()]
|
105
|
+
|
106
|
+
case_query = store.build_case_query(
|
107
|
+
case_ids=case_id,
|
108
|
+
institute_id=institute,
|
109
|
+
status=status,
|
110
|
+
older_than=older_than,
|
111
|
+
analysis_type=analysis_type,
|
112
|
+
)
|
90
113
|
# Estimate the average size of a variant document in database
|
91
114
|
avg_var_size = store.collection_stats("variant").get("avgObjSize", 0) # in bytes
|
92
115
|
|
scout/parse/panelapp.py
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
"""Code to parse panel information"""
|
2
2
|
|
3
3
|
import logging
|
4
|
-
from typing import Dict,
|
4
|
+
from typing import Dict, Optional
|
5
5
|
|
6
6
|
from scout.constants import INCOMPLETE_PENETRANCE_MAP, MODELS_MAP, PANELAPP_CONFIDENCE_EXCLUDE
|
7
7
|
from scout.utils.date import get_date
|
8
8
|
|
9
9
|
LOG = logging.getLogger(__name__)
|
10
|
+
PANELAPP_PANELS_URL = "https://panelapp.genomicsengland.co.uk/panels/"
|
10
11
|
|
11
12
|
|
12
13
|
def parse_panel_app_gene(
|
@@ -90,6 +91,7 @@ def parse_panelapp_panel(
|
|
90
91
|
gene_panel["display_name"] = " - ".join([panel_info["name"], f"[{confidence.upper()}]"])
|
91
92
|
gene_panel["institute"] = institute
|
92
93
|
gene_panel["panel_type"] = ("clinical",)
|
94
|
+
gene_panel["description"] = f"{PANELAPP_PANELS_URL}{panel_id}"
|
93
95
|
|
94
96
|
LOG.info("Parsing panel %s", gene_panel["display_name"])
|
95
97
|
|
@@ -84,6 +84,12 @@
|
|
84
84
|
<a target="_blank" href={{ record.entrez_link }} referrerpolicy="no-referrer" rel="noopener" target="_blank"> {{ entrez_id }}</a>
|
85
85
|
</span>
|
86
86
|
</li>
|
87
|
+
<li class="list-group-item">
|
88
|
+
PanelApp
|
89
|
+
<span class="float-end">
|
90
|
+
<a target="_blank" href={{ record.panelapp_link }} referrerpolicy="no-referrer" rel="noopener" target="_blank"> {{ symbol }} </a>
|
91
|
+
</span>
|
92
|
+
</li>
|
87
93
|
{% if pli_score %}
|
88
94
|
<li class="list-group-item">
|
89
95
|
pLi Score (<a href={{ record.gnomad_link }} referrerpolicy="no-referrer" rel="noopener" target="_blank">GnomAD</a>)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import logging
|
2
|
-
from typing import Optional
|
2
|
+
from typing import List, Optional
|
3
3
|
|
4
4
|
import requests
|
5
5
|
|
@@ -41,7 +41,7 @@ class PanelAppClient:
|
|
41
41
|
for type in panel.get("types", []):
|
42
42
|
self.panel_types.add(type["slug"])
|
43
43
|
|
44
|
-
def get_panel_ids(self, signed_off: bool) ->
|
44
|
+
def get_panel_ids(self, signed_off: bool) -> List[int]:
|
45
45
|
"""Returns a list of panel ids contained in a json document with gene panels data."""
|
46
46
|
|
47
47
|
def get_ids(json_panels):
|
@@ -1,5 +1,5 @@
|
|
1
1
|
scout/__init__.py,sha256=Z4liXvmEcLkC67ElsWvYHfemPKdWgWI5O6MB6XlDM8M,232
|
2
|
-
scout/__version__.py,sha256=
|
2
|
+
scout/__version__.py,sha256=ANcNj-w6TB4wETdZ9CZJYc1ZGU2Q1cA11Hzzi92m9BE,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
|
@@ -22,7 +22,7 @@ scout/adapter/mongo/matchmaker.py,sha256=amTvFOlUbrt1RmecY_8hPY6bO3j79lc2UbmzlCQ
|
|
22
22
|
scout/adapter/mongo/omics_variant.py,sha256=VdkNG_l6vcr3UF25EixEfvIdMGkSGeNaMjLRhQHS_lc,7521
|
23
23
|
scout/adapter/mongo/panel.py,sha256=d1oMEYAiDGybLmlbbf3-fQdCdU0-T7x2XdIUwZGthYk,20031
|
24
24
|
scout/adapter/mongo/phenomodel.py,sha256=cypSS8YRzu98Bf1kC0orfrLNn_ZQSYCK8e4mNR5PaPY,2572
|
25
|
-
scout/adapter/mongo/query.py,sha256=
|
25
|
+
scout/adapter/mongo/query.py,sha256=Zk5BV9GZYVlGoSRRjP88TpvB4teVpvHgHnSDV0W-kS0,33157
|
26
26
|
scout/adapter/mongo/rank_model.py,sha256=wvDNI4OLf-f7ZYZ_Q_6qi0myxOJCNNJR_-2-_0u2K2M,5712
|
27
27
|
scout/adapter/mongo/transcript.py,sha256=3U1qtyxZ1DnrzdBJm_emJXISMYFKJuX_zAKynUt8NMY,7417
|
28
28
|
scout/adapter/mongo/user.py,sha256=QoQnRWqi_dV3ZwGzBonEU6Ap9TgMDf2x_C5UIqG0pa0,2569
|
@@ -58,7 +58,7 @@ scout/commands/serve.py,sha256=fImJrgMBYQTD18xODjGqN6NgXjTe8seI_awd9vF04rU,1564
|
|
58
58
|
scout/commands/utils.py,sha256=T29f-1wTq3uoxqtv6QOqBdMBl7tLeEn8DYXnnv3gowI,306
|
59
59
|
scout/commands/wipe_database.py,sha256=TvCoXZCT-mvTqsZaFstV5u5FM8KAQstB3JxyGHYMLtg,1005
|
60
60
|
scout/commands/delete/__init__.py,sha256=6Z97FsWMqyKqF64Anl1zwljVNTfjJUCI7yylxIEnsUY,35
|
61
|
-
scout/commands/delete/delete_command.py,sha256=
|
61
|
+
scout/commands/delete/delete_command.py,sha256=_x897Du0nTsYmSG_5LAIm6Z9sjKcaCrtAR7cwuNwl4I,13285
|
62
62
|
scout/commands/download/__init__.py,sha256=mfDzxqKzJ0LgfPBN_fehkdX5BPy1FJ3rauA3ORLIjCM,39
|
63
63
|
scout/commands/download/download_command.py,sha256=m5CKefst3qhs4urfNu1A2TERisUb_5WPn-wn9bGCDr0,736
|
64
64
|
scout/commands/download/ensembl.py,sha256=CsTMjYihBtXyfofNIQ2riL9UBzydDbqoNZ7jJVQ15ak,2112
|
@@ -414,7 +414,7 @@ scout/parse/mitodel.py,sha256=3uvEXI9v9wIw97NUL7gqLLxHay0mpQpDgKaIxUbIyrE,803
|
|
414
414
|
scout/parse/omim.py,sha256=nrCaFZgjUKZo9Jfku2-jcNjdsIYHsvjdWcydz4nCpZA,12465
|
415
415
|
scout/parse/orpha.py,sha256=5u9xqGpAn8vgoJ0uVqbYiqQBiNfBwXOiTzX16kAnmFU,4392
|
416
416
|
scout/parse/panel.py,sha256=J28e_MkKeB5r4hOutb3qimxUT7G5yg8x1Ca4bAs0I_c,9577
|
417
|
-
scout/parse/panelapp.py,sha256=
|
417
|
+
scout/parse/panelapp.py,sha256=Idz6cGvQnyI-nn6yCTc6EGSRp1gX-CXN6Y4ayAee-_A,4076
|
418
418
|
scout/parse/peddy.py,sha256=uM49GaZMtr8waCsZDvCHDS5JDQ43JUlhdWh9C7f7ZvU,5418
|
419
419
|
scout/parse/smn.py,sha256=iOK1N8iYm9dFigsKtWq0Y0ZCa1CH29s9zeR_tH0bPuc,1153
|
420
420
|
scout/parse/omics_variant/__init__.py,sha256=vq8Ew4_Xr2vPy_3Fg0eTpPWsQpWnUXYBhjRndBUvtTw,422
|
@@ -500,7 +500,7 @@ scout/server/blueprints/diagnoses/templates/diagnoses/disease_term.html,sha256=8
|
|
500
500
|
scout/server/blueprints/genes/__init__.py,sha256=LPHrbmfVhZpLGGdExFbJp_Du1NKCsVOO_eaevpsNLC8,52
|
501
501
|
scout/server/blueprints/genes/controllers.py,sha256=LCuGPQymKxA7sES49z_j2_B3prKmNY-ME0VK892VoPs,3629
|
502
502
|
scout/server/blueprints/genes/views.py,sha256=lFJ7izYu0CbUJo3j5TesrUhIwreZUYw9_dDqd6iG8m4,1512
|
503
|
-
scout/server/blueprints/genes/templates/genes/gene.html,sha256=
|
503
|
+
scout/server/blueprints/genes/templates/genes/gene.html,sha256=a--c-IjzNKN_JW7z9jbNCnk3bLD_oVeFvf5x8IAmynA,11197
|
504
504
|
scout/server/blueprints/genes/templates/genes/genes.html,sha256=x6jXKijvuEX9GvIedHW4O_BerYXiWEmAdYT0HTiGnhI,1130
|
505
505
|
scout/server/blueprints/genes/templates/genes/layout.html,sha256=cZMLe2cInq24z0sZpPxDm_kEiAe5VQbOR-8XWn6wlvI,1601
|
506
506
|
scout/server/blueprints/institutes/__init__.py,sha256=kGSyYrBC1QaEQBDdoMkMLfaowV7roaV5DowICi_0RSQ,65
|
@@ -644,7 +644,7 @@ scout/server/extensions/ldap_extension.py,sha256=nVgJ6YhSyvpg8J4bSYzJwoEvKhP0faW
|
|
644
644
|
scout/server/extensions/loqus_extension.py,sha256=uiqUXQ7Q7DCj6C20TKgL8yLu9DXov95vrJfhq0tvbTM,12602
|
645
645
|
scout/server/extensions/matchmaker_extension.py,sha256=mNytCYnZX1hgdq1otkvnyOkh4dj9SVgQthJAfKb8TMI,5024
|
646
646
|
scout/server/extensions/mongo_extension.py,sha256=bKB0K5ibp-BWynOTgzBJd5qIYO0S9zRtEyDUw7EoxSQ,1029
|
647
|
-
scout/server/extensions/panelapp_extension.py,sha256=
|
647
|
+
scout/server/extensions/panelapp_extension.py,sha256=UnHhyG7iSMy3ERQg5Sl3DOkmKjsLPgAEfPkzlfn2BrY,2738
|
648
648
|
scout/server/extensions/phenopacket_extension.py,sha256=kcEUIOSfkQAlAmUm07hQS1BeUjeN4lBc-InvaNtbFxo,7295
|
649
649
|
scout/server/extensions/rerunner_extension.py,sha256=SEwQi5BZR5X70BoD0U7TfyGgGv2WbJbas0v1efuv_r8,1104
|
650
650
|
scout/server/static/bs_styles.css,sha256=Y7aq8Es3NHj1OaLPX0eiY5485C8gENptpuYmf7W3o1w,6421
|
@@ -677,9 +677,9 @@ scout/utils/md5.py,sha256=KkgdxOf7xbF9AF40ZjQKCgWaxFWJ9tp9RKjd8SU6IoA,649
|
|
677
677
|
scout/utils/scout_requests.py,sha256=lgPumNI_EikBZR1m9ztZI_mZAfV29y1KGoiBv9kejzQ,12797
|
678
678
|
scout/utils/sort.py,sha256=1AcbeZ6vdt_UXM3BLDBa3aQmN4qxrqtskxwD19oBhvw,756
|
679
679
|
scout/utils/track_resources.py,sha256=eUjSEe-Ff8BIb4BHPC_COkJocQO2PaWueiPz1GAuiwY,2614
|
680
|
-
scout_browser-4.
|
681
|
-
scout_browser-4.
|
682
|
-
scout_browser-4.
|
683
|
-
scout_browser-4.
|
684
|
-
scout_browser-4.
|
685
|
-
scout_browser-4.
|
680
|
+
scout_browser-4.92.dist-info/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
|
681
|
+
scout_browser-4.92.dist-info/METADATA,sha256=Z78U2w0_9MMsAmsc1pLdjEAkA2k2J06aUwZ2R6VIbJM,14260
|
682
|
+
scout_browser-4.92.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
683
|
+
scout_browser-4.92.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
|
684
|
+
scout_browser-4.92.dist-info/top_level.txt,sha256=qM75h71bztMaLYsxn1up4c_n2rjc_ZnyaW6Q0K5uOXc,6
|
685
|
+
scout_browser-4.92.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|