scout-browser 4.86__py3-none-any.whl → 4.86.1__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/hgnc.py +15 -15
- scout/load/panel.py +33 -8
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/METADATA +1 -1
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/RECORD +9 -9
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/LICENSE +0 -0
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/WHEEL +0 -0
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/entry_points.txt +0 -0
- {scout_browser-4.86.dist-info → scout_browser-4.86.1.dist-info}/top_level.txt +0 -0
scout/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "4.86"
|
1
|
+
__version__ = "4.86.1"
|
scout/adapter/mongo/hgnc.py
CHANGED
@@ -7,6 +7,7 @@ from pymongo.errors import BulkWriteError, DuplicateKeyError
|
|
7
7
|
from scout.exceptions import IntegrityError
|
8
8
|
|
9
9
|
LOG = logging.getLogger(__name__)
|
10
|
+
QUERY_FIELD_EXISTS = {"$exists": True, "$ne": None}
|
10
11
|
|
11
12
|
|
12
13
|
class GeneHandler(object):
|
@@ -364,9 +365,13 @@ class GeneHandler(object):
|
|
364
365
|
Returns:
|
365
366
|
mapping(dict): {"ENSG00000121410": 5, ...}
|
366
367
|
"""
|
367
|
-
|
368
|
-
|
369
|
-
|
368
|
+
query = {
|
369
|
+
"ensembl_id": QUERY_FIELD_EXISTS,
|
370
|
+
"hgnc_id": QUERY_FIELD_EXISTS,
|
371
|
+
}
|
372
|
+
project = {"ensembl_id": 1, "hgnc_id": 1}
|
373
|
+
result = self.hgnc_collection.find(query, project)
|
374
|
+
mapping = {res["ensembl_id"]: res["hgnc_id"] for res in result}
|
370
375
|
return mapping
|
371
376
|
|
372
377
|
def hgnc_symbol_ensembl_id_mapping(self) -> Dict[str, str]:
|
@@ -375,18 +380,13 @@ class GeneHandler(object):
|
|
375
380
|
Returns:
|
376
381
|
mapping(dict): {"A1BG": "ENSG00000121410".}
|
377
382
|
"""
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
}
|
386
|
-
}
|
387
|
-
]
|
388
|
-
result = self.hgnc_collection.aggregate(pipeline)
|
389
|
-
mapping = {res["_id"]["hgnc_symbol"]: res["_id"]["ensembl_id"] for res in result}
|
383
|
+
query = {
|
384
|
+
"ensembl_id": QUERY_FIELD_EXISTS,
|
385
|
+
"hgnc_symbol": QUERY_FIELD_EXISTS,
|
386
|
+
}
|
387
|
+
project = {"ensembl_id": 1, "hgnc_symbol": 1}
|
388
|
+
result = self.hgnc_collection.find(query, project)
|
389
|
+
mapping = {res["hgnc_symbol"]: res["ensembl_id"] for res in result}
|
390
390
|
return mapping
|
391
391
|
|
392
392
|
def ensembl_genes(self, build=None, add_transcripts=False, id_transcripts=False):
|
scout/load/panel.py
CHANGED
@@ -117,27 +117,33 @@ def _panelapp_panel_ids() -> List[str]:
|
|
117
117
|
return [panel_info["Panel_Id"] for panel_info in json_lines.get("result", [])]
|
118
118
|
|
119
119
|
|
120
|
-
def _parse_panelapp_panel(
|
120
|
+
def _parse_panelapp_panel(
|
121
|
+
panel_id: str,
|
122
|
+
institute: str,
|
123
|
+
confidence: str,
|
124
|
+
ensembl_id_to_hgnc_id_map: Dict[str, int],
|
125
|
+
hgnc_symbol_to_ensembl_id_map: Dict[str, str],
|
126
|
+
):
|
121
127
|
"""fetch and parse lines from a PanelApp panel, given its ID
|
122
128
|
|
123
129
|
Args:
|
124
130
|
adapter(scout.adapter.MongoAdapter)
|
125
131
|
panel_id(str): The panel app panel id
|
126
132
|
confidence(str enum green|amber|red): traffic light-style PanelApp level of confidence
|
133
|
+
ensembl_to_hgnc_map: dict[str, int]
|
134
|
+
hgnc_to_ensembl_map: [int, str]
|
135
|
+
|
127
136
|
|
128
137
|
Returns:
|
129
138
|
parsed_panel(dict). Example:
|
130
139
|
{'version': 3.3, 'date': datetime.datetime(2023, 1, 31, 16, 43, 37, 521719), 'display_name': 'Diabetes - neonatal onset - [GREEN]', 'institute': 'cust000', 'panel_type': 'clinical', 'genes': [list of genes], 'panel_id': '55a9041e22c1fc6711b0c6c0'}
|
131
140
|
|
132
141
|
"""
|
133
|
-
ensembl_gene_hgnc_id_map: Dict[str, int] = adapter.ensembl_to_hgnc_id_mapping()
|
134
|
-
hgnc_symbol_ensembl_gene_map: Dict[str, str] = adapter.hgnc_symbol_ensembl_id_mapping()
|
135
|
-
|
136
142
|
json_lines = fetch_resource(PANELAPP_BASE_URL.format("get_panel") + panel_id, json=True)
|
137
143
|
parsed_panel = parse_panel_app_panel(
|
138
144
|
panel_info=json_lines["result"],
|
139
|
-
ensembl_gene_hgnc_id_map=
|
140
|
-
hgnc_symbol_ensembl_gene_map=
|
145
|
+
ensembl_gene_hgnc_id_map=ensembl_id_to_hgnc_id_map,
|
146
|
+
hgnc_symbol_ensembl_gene_map=hgnc_symbol_to_ensembl_id_map,
|
141
147
|
institute=institute,
|
142
148
|
confidence=confidence,
|
143
149
|
)
|
@@ -166,8 +172,17 @@ def load_panelapp_panel(adapter, panel_id=None, institute="cust000", confidence=
|
|
166
172
|
LOG.info("Fetching all panel app panels")
|
167
173
|
panel_ids: List[str] = _panelapp_panel_ids()
|
168
174
|
|
175
|
+
ensembl_id_to_hgnc_id_map: Dict[str, int] = adapter.ensembl_to_hgnc_id_mapping()
|
176
|
+
hgnc_symbol_to_ensembl_id_map: Dict[int, str] = adapter.hgnc_symbol_ensembl_id_mapping()
|
177
|
+
|
169
178
|
for _ in panel_ids:
|
170
|
-
parsed_panel = _parse_panelapp_panel(
|
179
|
+
parsed_panel = _parse_panelapp_panel(
|
180
|
+
panel_id=_,
|
181
|
+
institute=institute,
|
182
|
+
confidence=confidence,
|
183
|
+
ensembl_id_to_hgnc_id_map=ensembl_id_to_hgnc_id_map,
|
184
|
+
hgnc_symbol_to_ensembl_id_map=hgnc_symbol_to_ensembl_id_map,
|
185
|
+
)
|
171
186
|
|
172
187
|
if len(parsed_panel["genes"]) == 0:
|
173
188
|
LOG.warning("Panel %s is missing genes. Skipping.", parsed_panel["display_name"])
|
@@ -201,9 +216,19 @@ def load_panelapp_green_panel(adapter, institute, force):
|
|
201
216
|
}
|
202
217
|
genes = set() # avoid duplicate genes from different panels
|
203
218
|
# Loop over all PanelApp panels
|
219
|
+
|
220
|
+
ensembl_id_to_hgnc_id_map: Dict[str, int] = adapter.ensembl_to_hgnc_id_mapping()
|
221
|
+
hgnc_symbol_to_ensembl_id_map: Dict[int, str] = adapter.hgnc_symbol_ensembl_id_mapping()
|
222
|
+
|
204
223
|
for _ in panel_ids:
|
205
224
|
# And collect their green genes
|
206
|
-
parsed_panel = _parse_panelapp_panel(
|
225
|
+
parsed_panel = _parse_panelapp_panel(
|
226
|
+
panel_id=_,
|
227
|
+
institute=institute,
|
228
|
+
confidence="green",
|
229
|
+
ensembl_id_to_hgnc_id_map=ensembl_id_to_hgnc_id_map,
|
230
|
+
hgnc_symbol_to_ensembl_id_map=hgnc_symbol_to_ensembl_id_map,
|
231
|
+
)
|
207
232
|
genes.update({(gene["hgnc_id"], gene["hgnc_symbol"]) for gene in parsed_panel.get("genes")})
|
208
233
|
|
209
234
|
green_panel["genes"] = [{"hgnc_id": tup[0], "hgnc_symbol": tup[1]} for tup in genes]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
scout/__init__.py,sha256=Z4liXvmEcLkC67ElsWvYHfemPKdWgWI5O6MB6XlDM8M,232
|
2
|
-
scout/__version__.py,sha256=
|
2
|
+
scout/__version__.py,sha256=Bv6pkrw-9AgvxM3NeIK6_fIwVSVxwIL91re4O83Ec0k,23
|
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
|
@@ -13,7 +13,7 @@ scout/adapter/mongo/cytoband.py,sha256=2NoIAoQ7RPqcipiSymD2O9qH8lXscP3T5ejquOrD7
|
|
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=vzBJS_6vq2z76SH8PszdRR-MNuZ7_RA4VJvnkNYUs7s,8937
|
16
|
-
scout/adapter/mongo/hgnc.py,sha256=
|
16
|
+
scout/adapter/mongo/hgnc.py,sha256=9jbrkaTtlnnuE5gsSM8ylb8Kero4lC2zCWr-90QlyAY,16420
|
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
|
@@ -370,7 +370,7 @@ scout/load/exon.py,sha256=ONaWJ9EfbhGV8KGXxwlq_jYCoU-JkBpv4r9zDaCjtls,2070
|
|
370
370
|
scout/load/hgnc_gene.py,sha256=GcSQ01CioYIshAzXAv4msIGDPjTjGBBPBnLX2GvaZJ4,4507
|
371
371
|
scout/load/hpo.py,sha256=ZWYjV9j6OfpI-ZZuhTQVEs_xgLa7ST2KuvYLW6ku0PY,2474
|
372
372
|
scout/load/institute.py,sha256=etmZ0CZRHOVi3f9R-wn5BK1pZPhtZwq2QYbh2RXXxDc,625
|
373
|
-
scout/load/panel.py,sha256=
|
373
|
+
scout/load/panel.py,sha256=Zxv-ZlRyk7ZWKy1p0Cod-ATh7TzKqeMbiLu5I6-VEzs,10246
|
374
374
|
scout/load/report.py,sha256=TJvblks6Dp5-UDflWRTa8b3fe-A4bT4QnWT2yZLhfLA,820
|
375
375
|
scout/load/setup.py,sha256=0qQgfCr53oHL626hG5y0o5vwRnJ4X0IMaTFvMBMRNQE,8183
|
376
376
|
scout/load/transcript.py,sha256=mk0Da7GWwqLVRp2xRD9mlzqaomH9R-TL2aKCJx4fEA8,4632
|
@@ -671,9 +671,9 @@ scout/utils/md5.py,sha256=KkgdxOf7xbF9AF40ZjQKCgWaxFWJ9tp9RKjd8SU6IoA,649
|
|
671
671
|
scout/utils/scout_requests.py,sha256=JjHOJW1XmenG05mNQ33kvOKq_IicveIfQMcPZeRcQdo,12856
|
672
672
|
scout/utils/sort.py,sha256=1AcbeZ6vdt_UXM3BLDBa3aQmN4qxrqtskxwD19oBhvw,756
|
673
673
|
scout/utils/track_resources.py,sha256=eUjSEe-Ff8BIb4BHPC_COkJocQO2PaWueiPz1GAuiwY,2614
|
674
|
-
scout_browser-4.86.dist-info/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
|
675
|
-
scout_browser-4.86.dist-info/METADATA,sha256=
|
676
|
-
scout_browser-4.86.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
677
|
-
scout_browser-4.86.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
|
678
|
-
scout_browser-4.86.dist-info/top_level.txt,sha256=qM75h71bztMaLYsxn1up4c_n2rjc_ZnyaW6Q0K5uOXc,6
|
679
|
-
scout_browser-4.86.dist-info/RECORD,,
|
674
|
+
scout_browser-4.86.1.dist-info/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
|
675
|
+
scout_browser-4.86.1.dist-info/METADATA,sha256=mQw8mIrZPRWvJexXxlV4DL3-tNw3gL_XJQy38ROnv20,14262
|
676
|
+
scout_browser-4.86.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
677
|
+
scout_browser-4.86.1.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
|
678
|
+
scout_browser-4.86.1.dist-info/top_level.txt,sha256=qM75h71bztMaLYsxn1up4c_n2rjc_ZnyaW6Q0K5uOXc,6
|
679
|
+
scout_browser-4.86.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|