scout-browser 4.87__py3-none-any.whl → 4.88__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 +2 -0
- scout/adapter/mongo/omics_variant.py +50 -10
- scout/build/individual.py +4 -0
- scout/build/variant/gene.py +2 -1
- scout/commands/update/individual.py +1 -0
- scout/demo/643594.clinical.vcf.gz +0 -0
- scout/demo/643594.clinical.vcf.gz.tbi +0 -0
- scout/demo/643594.config.yaml +3 -0
- scout/demo/drop/fraser_top_hits_clinical.tsv +5 -5
- scout/demo/drop/outrider_top_hits_clinical.tsv +10 -10
- scout/load/setup.py +3 -2
- scout/models/case/case.py +1 -0
- scout/models/case/case_loading_models.py +1 -0
- scout/models/omics_variant.py +39 -22
- scout/server/blueprints/omics_variants/templates/omics_variants/outliers.html +6 -1
- scout/server/blueprints/variant/templates/variant/sv-variant.html +2 -5
- scout/server/blueprints/variant/templates/variant/utils.html +49 -0
- scout/server/blueprints/variant/templates/variant/variant.html +2 -25
- scout/server/blueprints/variant/utils.py +11 -4
- scout/server/blueprints/variants/templates/variants/components.html +5 -1
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/METADATA +1 -1
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/RECORD +27 -27
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/LICENSE +0 -0
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/WHEEL +0 -0
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/entry_points.txt +0 -0
- {scout_browser-4.87.dist-info → scout_browser-4.88.dist-info}/top_level.txt +0 -0
scout/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "4.
|
1
|
+
__version__ = "4.88"
|
scout/adapter/mongo/case.py
CHANGED
@@ -534,6 +534,8 @@ class CaseHandler(object):
|
|
534
534
|
{"RNAfusion_report_research": EXISTS_NOT_NULL},
|
535
535
|
{"RNAfusion_inspector": EXISTS_NOT_NULL},
|
536
536
|
{"RNAfusion_inspector_research": EXISTS_NOT_NULL},
|
537
|
+
{"omics_files.fraser": EXISTS_NOT_NULL},
|
538
|
+
{"omics_files.outrider": EXISTS_NOT_NULL},
|
537
539
|
],
|
538
540
|
}
|
539
541
|
return [case["_id"] for case in self.case_collection.find(query)]
|
@@ -33,20 +33,60 @@ class OmicsVariantHandler:
|
|
33
33
|
|
34
34
|
LOG.info("%s variants deleted", result.deleted_count)
|
35
35
|
|
36
|
+
def get_matching_omics_sample_id(self, case_obj: dict, omics_model: dict) -> dict:
|
37
|
+
"""Select individual that matches omics model sample on omics_sample_id if these are provided."""
|
38
|
+
for ind in case_obj.get("individuals"):
|
39
|
+
if omics_model["sample_id"] == ind.get("omics_sample_id"):
|
40
|
+
return ind
|
41
|
+
|
42
|
+
def get_matching_sample_id(self, case_obj: dict, omics_model: dict) -> dict:
|
43
|
+
"""
|
44
|
+
Select individual that matches omics model on sample id (as when we are loading a pure RNA case eg).
|
45
|
+
"""
|
46
|
+
for ind in case_obj.get("individuals"):
|
47
|
+
if omics_model["sample_id"] == ind.get("individual_id"):
|
48
|
+
return ind
|
49
|
+
|
50
|
+
def _get_affected_individual(self, case_obj: dict) -> dict:
|
51
|
+
"""
|
52
|
+
Fall back to assigning the variants to an individual with affected status to have them display
|
53
|
+
on variantS queries.
|
54
|
+
"""
|
55
|
+
for ind in case_obj.get("individuals"):
|
56
|
+
if ind.get("phenotype") in [2, "affected"]:
|
57
|
+
return ind
|
58
|
+
|
59
|
+
def _get_first_individual(self, case_obj: dict) -> dict:
|
60
|
+
"""
|
61
|
+
Fall back to assigning the variants to any one individual to have them display
|
62
|
+
on variantS queries.
|
63
|
+
"""
|
64
|
+
return case_obj.get("individuals")[0]
|
65
|
+
|
36
66
|
def set_samples(self, case_obj: dict, omics_model: dict):
|
37
|
-
"""Internal member function to connect individuals.
|
38
|
-
OMICS variants do not have a genotype as such.
|
67
|
+
"""Internal member function to connect individuals for a single OMICS variant.
|
68
|
+
OMICS variants do not have a genotype as such.
|
69
|
+
Select individuals that match on omics_sample_id if these are provided.
|
70
|
+
For a fallback, match on sample id (as when we are loading a pure RNA case eg),
|
71
|
+
or fall back to assigning the variants to an individual with affected status to have them display
|
72
|
+
on variantS queries.
|
73
|
+
."""
|
39
74
|
|
40
75
|
samples = []
|
41
76
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
77
|
+
match = (
|
78
|
+
self.get_matching_omics_sample_id(case_obj, omics_model)
|
79
|
+
or self.get_matching_sample_id(case_obj, omics_model)
|
80
|
+
or self._get_affected_individual(case_obj)
|
81
|
+
or self._get_first_individual(case_obj)
|
82
|
+
)
|
83
|
+
|
84
|
+
sample = {
|
85
|
+
"sample_id": match["individual_id"],
|
86
|
+
"display_name": match["display_name"],
|
87
|
+
"genotype_call": "./1",
|
88
|
+
}
|
89
|
+
samples.append(sample)
|
50
90
|
|
51
91
|
omics_model["samples"] = samples
|
52
92
|
|
scout/build/individual.py
CHANGED
@@ -142,4 +142,8 @@ def build_individual(ind: dict) -> dict:
|
|
142
142
|
ind_obj["bionano_access"] = ind.get("bionano_access", None)
|
143
143
|
ind_obj["fshd_loci"] = ind.get("fshd_loci", None)
|
144
144
|
|
145
|
+
# omics variants
|
146
|
+
if "omics_sample_id" in ind:
|
147
|
+
ind_obj["omics_sample_id"] = ind["omics_sample_id"]
|
148
|
+
|
145
149
|
return ind_obj
|
scout/build/variant/gene.py
CHANGED
@@ -54,7 +54,8 @@ def build_gene(gene, hgncid_to_gene=None):
|
|
54
54
|
if hgnc_gene:
|
55
55
|
# Set the hgnc symbol etc to the one internally in Scout
|
56
56
|
gene_obj["hgnc_symbol"] = hgnc_gene["hgnc_symbol"]
|
57
|
-
|
57
|
+
if "ensembl_id" in hgnc_gene:
|
58
|
+
gene_obj["ensembl_id"] = hgnc_gene["ensembl_id"]
|
58
59
|
gene_obj["description"] = hgnc_gene["description"]
|
59
60
|
|
60
61
|
if hgnc_gene.get("inheritance_models"):
|
@@ -25,6 +25,7 @@ UPDATE_DICT = {
|
|
25
25
|
"rhocall_wig": "path",
|
26
26
|
"rna_alignment_path": "path",
|
27
27
|
"rna_coverage_bigwig": "path", # Coverage islands generated from bam or cram files (RNA-seq analysis)
|
28
|
+
"omics_sample_id": "str", # RNA sample id for connected wts outliers
|
28
29
|
"splice_junctions_bed": "path", # An indexed junctions .bed.gz file obtained from STAR v2 aligner *.SJ.out.tab file.
|
29
30
|
"subject_id": "str", # Individual subject_id (for matching multiomics data and statistics)
|
30
31
|
"tiddit_coverage_wig": "path",
|
Binary file
|
Binary file
|
scout/demo/643594.config.yaml
CHANGED
@@ -40,6 +40,7 @@ samples:
|
|
40
40
|
'alignment_index': 'scout/demo/REViewer_test_data/justhusky_exphun_hugelymodelbat_realigned.bam.bai'
|
41
41
|
'vcf': 'scout/demo/REViewer_test_data/justhusky_exphun_hugelymodelbat.vcf'
|
42
42
|
'catalog': 'scout/demo/REViewer_test_data/catalog_test.json'
|
43
|
+
omics_sample_id: RNA1059A2
|
43
44
|
rna_alignment_path: scout/demo/reduced_mt.bam
|
44
45
|
rna_coverage_bigwig: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered.bigWig
|
45
46
|
splice_junctions_bed: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered_sorted.bed.gz
|
@@ -62,6 +63,7 @@ samples:
|
|
62
63
|
mitodel_file: scout/demo/mitodel_test_files/slowlycivilbuck_lanes_1_sorted_md_mitodel.txt
|
63
64
|
mt_bam: scout/demo/reduced_mt.bam
|
64
65
|
vcf2cytosure: scout/demo/ADM1059A1.test.cgh
|
66
|
+
omics_sample_id: RNA1059A1
|
65
67
|
rna_alignment_path: scout/demo/reduced_mt.bam
|
66
68
|
rna_coverage_bigwig: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered.bigWig
|
67
69
|
splice_junctions_bed: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered_sorted.bed.gz
|
@@ -80,6 +82,7 @@ samples:
|
|
80
82
|
mitodel_file: scout/demo/mitodel_test_files/earlycasualcaiman_lanes_1_sorted_md_mitodel.txt
|
81
83
|
mt_bam: scout/demo/reduced_mt.bam
|
82
84
|
vcf2cytosure: scout/demo/ADM1059A3.test.cgh
|
85
|
+
omics_sample_id: RNA1059A3
|
83
86
|
rna_alignment_path: scout/demo/reduced_mt.bam
|
84
87
|
rna_coverage_bigwig: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered.bigWig
|
85
88
|
splice_junctions_bed: scout/demo/ACC5963A1_lanes_1234_star_sorted_sj_filtered_sorted.bed.gz
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
2439 ENSG00000119535.18 CSF3R protein_coding CSF3R
|
3
|
-
4831 ENSG00000213934.9 HBG1 protein_coding HBG1
|
4
|
-
4832 ENSG00000196565.15 HBG2 protein_coding HBG2
|
5
|
-
17284 ENSG00000213934.9 POT1 protein_coding POT1
|
1
|
+
hgncId geneID hgncSymbol geneType geneNameOrig sampleID seqnames start end width strand type pValue psiValue deltaPsi counts totalCounts meanCounts meanTotalCounts nonsplitCounts nonsplitProportion nonsplitproportion99quantile annotatedJunction pValueGene padjustGene pairedEnd dnaId dropGroup spliceCountsDir hpoTerms geneCountsFile geneAnnotation genome isExternal potentialImpact causesFrameshift utrOverlap blacklist
|
2
|
+
2439 ENSG00000119535.18 CSF3R protein_coding CSF3R RNA1059A2 chr1 36479517 Imp 1961 - jaccard 1.6652e-06 0.49 -0.39 127 258 4237.77 4570.55 3 0.01 0.02 both 9.9912e-06 True outrider,fraser False annotatedIntron_reducedUsage unlikely 5'-UTR False
|
3
|
+
4831 ENSG00000213934.9 HBG1 protein_coding HBG1 RNA1059A2 chr11 5248488 5254291 5804 - jaccard 1.918e-12 0.36 0.35 35 96 22.84 6902.91 0 0.0 0.0 end 5.7541e-12 1.2885e-08 True outrider,fraser False exonSkipping inconclusive 3'-UTR False
|
4
|
+
4832 ENSG00000196565.15 HBG2 protein_coding HBG2 RNA1059A2 chr11 5248488 5254291 5804 - jaccard 1.918e-12 0.36 0.35 35 96 22.84 6902.91 0 0.0 0.0 end 3.836e-12 1.2885e-08 True outrider,fraser False exonSkipping inconclusive 3'-UTR False
|
5
|
+
17284 ENSG00000213934.9 POT1 protein_coding POT1 RNA1059A2 chr7 124532319 124532434 115 - jaccard 1.918e-12 0.36 0.35 35 96 22.84 6902.91 0 0.0 0.0 end 5.7541e-12 1.2885e-08 True outrider,fraser False exonSkipping inconclusive 3'-UTR False
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
25415 chr4 88257620 88284769 - ENSG00000163644.15 PPM1K protein_coding PPM1K
|
3
|
-
10019 chr6 3063824 3115187 + ENSG00000137275.16 RIPK1 protein_coding RIPK1
|
4
|
-
4827 chr11 5225464 5229395 - ENSG00000244734.4 HBB protein_coding HBB
|
5
|
-
4831 chr11 5248269 5249857 - ENSG00000213934.9 HBG1 protein_coding HBG1
|
6
|
-
16860 chr12 108522214 108561400 - ENSG00000075856.12 SART3 protein_coding SART3
|
7
|
-
4824 chr16 172876 173710 + ENSG00000188536.13 HBA2 protein_coding HBA2
|
8
|
-
4823 chr16 176680 177522 + ENSG00000206172.8 HBA1 protein_coding HBA1
|
9
|
-
9543 chr17 4796144 4798502 + ENSG00000142507.10 PSMB6 protein_coding PSMB6
|
10
|
-
17284 chr7 124532319 124532434 - ENSG00000213934.9 POT1 protein_coding POT1
|
1
|
+
hgncId seqnames start end strand geneID hgncSymbol geneType geneNameOrig sampleID pValue padjust zScore l2fc rawcounts normcounts meanCorrected theta aberrant aberrantbysample aberrantbygene padjRank FDRset foldChange
|
2
|
+
25415 chr4 88257620 88284769 - ENSG00000163644.15 PPM1K protein_coding PPM1K RNA1059A2 0.0016124374690447165 1.0 -5.92 -0.9 27 317.46 601.46 139.77 False 4.0 0.0 6110.0 transcriptome-wide 0.54
|
3
|
+
10019 chr6 3063824 3115187 + ENSG00000137275.16 RIPK1 protein_coding RIPK1 RNA1059A2 0.0009997468998232232 1.0 6.33 0.53 104 1891.09 1308.4 547.35 False 4.0 0.0 6110.0 transcriptome-wide 1.44
|
4
|
+
4827 chr11 5225464 5229395 - ENSG00000244734.4 HBB protein_coding HBB RNA1059A2 3.417496739472308e-25 4.169327890311004e-20 -12.61 -10.14 61 2625.42 3016434.64 9.21 True 4.0 1.0 1.0 transcriptome-wide 0.0
|
5
|
+
4831 chr11 5248269 5249857 - ENSG00000213934.9 HBG1 protein_coding HBG1 RNA1059A3 0.0016205310428587193 1.0 2.23 2.86 73 151.01 19.19 0.91 False 4.0 0.0 6110.0 transcriptome-wide 7.26
|
6
|
+
16860 chr12 108522214 108561400 - ENSG00000075856.12 SART3 protein_coding SART3 RNA1059A2 0.0014636643867152977 1.0 7.02 0.51 97 1412.71 989.2 1000.0 False 4.0 0.0 6110.0 transcriptome-wide 1.42
|
7
|
+
4824 chr16 172876 173710 + ENSG00000188536.13 HBA2 protein_coding HBA2 RNA1059A2 2.15484140654196e-24 1.2729742965811128e-19 -12.53 -10.01 262 6781.29 7019330.9 8.97 True 4.0 1.0 2.5 transcriptome-wide 0.0
|
8
|
+
4823 chr16 176680 177522 + ENSG00000206172.8 HBA1 protein_coding HBA1 RNA1059A2 3.1302782768232926e-24 1.2729742965811128e-19 -12.5 -9.97 246 6497.61 6540277.08 8.95 True 4.0 1.0 2.5 transcriptome-wide 0.0
|
9
|
+
9543 chr17 4796144 4798502 + ENSG00000142507.10 PSMB6 protein_coding PSMB6 RNA1059A2 0.0010771639306525651 1.0 -10.54 -1.14 13 342.89 783.82 1000.0 False 4.0 0.0 6110.0 transcriptome-wide 0.45
|
10
|
+
17284 chr7 124532319 124532434 - ENSG00000213934.9 POT1 protein_coding POT1 RNA1059A2 0.0016205310428587193 1.0 2.23 2.86 73 151.01 19.19 0.91 False 4.0 0.0 6110.0 transcriptome-wide 7.26
|
scout/load/setup.py
CHANGED
@@ -158,8 +158,9 @@ def setup_scout(
|
|
158
158
|
# Create a map from ensembl ids to gene objects
|
159
159
|
ensembl_genes = {}
|
160
160
|
for gene_obj in hgnc_genes:
|
161
|
-
ensembl_id = gene_obj
|
162
|
-
|
161
|
+
ensembl_id = gene_obj.get("ensembl_id")
|
162
|
+
if ensembl_id:
|
163
|
+
ensembl_genes[ensembl_id] = gene_obj
|
163
164
|
|
164
165
|
# Load transcripts
|
165
166
|
tx_path = "transcripts{}_path".format(build)
|
scout/models/case/case.py
CHANGED
@@ -31,6 +31,7 @@ individual = dict(
|
|
31
31
|
smn_27134_cn=int, # CopyNumber
|
32
32
|
rna_alignment_path=str, # Path to bam file
|
33
33
|
rna_coverage_bigwig=str, # Coverage islands generated from bam or cram files (RNA-seq analysis)
|
34
|
+
omics_sample_id=str, # RNA sample id for connected wts outliers
|
34
35
|
splice_junctions_bed=str, # An indexed junctions .bed.gz file obtained from STAR v2 aligner *.SJ.out.tab file.
|
35
36
|
predicted_ancestry=str, # one of AFR AMR EAS EUR SAS UNKNOWN
|
36
37
|
tumor_type=str,
|
@@ -221,6 +221,7 @@ class SampleLoader(BaseModel):
|
|
221
221
|
rhocall_wig: Optional[str] = None
|
222
222
|
rna_alignment_path: Optional[str] = None
|
223
223
|
rna_coverage_bigwig: Optional[str] = None
|
224
|
+
omics_sample_id: Optional[str] = None
|
224
225
|
sample_name: Optional[str] = None
|
225
226
|
sex: Literal["unknown", "female", "male"]
|
226
227
|
smn1_cn: Optional[int] = None
|
scout/models/omics_variant.py
CHANGED
@@ -9,7 +9,7 @@ import logging
|
|
9
9
|
from datetime import datetime
|
10
10
|
from typing import List, Optional
|
11
11
|
|
12
|
-
from pydantic import BaseModel, Field, field_validator, model_validator
|
12
|
+
from pydantic import AliasChoices, BaseModel, Field, field_validator, model_validator
|
13
13
|
|
14
14
|
LOG = logging.getLogger(__name__)
|
15
15
|
|
@@ -38,18 +38,28 @@ class OmicsVariantLoader(BaseModel):
|
|
38
38
|
|
39
39
|
# sample id is mandatory: each row pertains to one outlier event in one individual as compared to others
|
40
40
|
# In the db object, this will be replaced with a "samples" array of individual dict.
|
41
|
-
|
41
|
+
sample_id: str = Field(
|
42
|
+
alias=AliasChoices("sample_id", "sampleID"), serialization_alias="sample_id"
|
43
|
+
)
|
42
44
|
|
43
45
|
# outlier variants must identify the gene they pertain to, primarily with an hgnc_id
|
44
|
-
hgnc_ids: Optional[List[int]] = Field(alias="
|
45
|
-
|
46
|
+
hgnc_ids: Optional[List[int]] = Field(alias="hgncId", serialization_alias="hgnc_ids")
|
47
|
+
ensembl_gene_id: Optional[str] = Field(
|
48
|
+
alias="geneID", serialization_alias="ensembl_gene_id", default=None
|
49
|
+
)
|
46
50
|
|
47
51
|
hgnc_symbols: Optional[List[str]] = Field(
|
48
52
|
alias="hgncSymbol", serialization_alias="hgnc_symbols"
|
49
53
|
)
|
50
|
-
gene_name_orig: Optional[str]
|
54
|
+
gene_name_orig: Optional[str] = Field(
|
55
|
+
alias=AliasChoices("geneNameOrig", "gene_name_orig"),
|
56
|
+
serialization_alias="gene_name_orig",
|
57
|
+
default=None,
|
58
|
+
)
|
51
59
|
|
52
|
-
gene_type: Optional[str]
|
60
|
+
gene_type: Optional[str] = Field(
|
61
|
+
alias=AliasChoices("gene_type", "geneType"), serialization_alias="gene_type", default=None
|
62
|
+
)
|
53
63
|
|
54
64
|
# coordinates if applicable
|
55
65
|
chromosome: Optional[str] = Field(alias="seqnames", serialization_alias="chromosome")
|
@@ -85,7 +95,7 @@ class OmicsVariantLoader(BaseModel):
|
|
85
95
|
alias="nonsplitProportion", serialization_alias="nonsplit_proportion", default=None
|
86
96
|
)
|
87
97
|
nonsplit_proportion_99quantile: Optional[float] = Field(
|
88
|
-
alias="
|
98
|
+
alias="nonsplitproportion99quantile",
|
89
99
|
serialization_alias="nonsplit_proportion_99quantile",
|
90
100
|
default=None,
|
91
101
|
)
|
@@ -99,7 +109,7 @@ class OmicsVariantLoader(BaseModel):
|
|
99
109
|
alias="padjustGene", serialization_alias="p_adjust_gene", default=None
|
100
110
|
)
|
101
111
|
paired_end: Optional[str] = Field(
|
102
|
-
alias="
|
112
|
+
alias="pairedEnd", serialization_alias="paired_end", default=None
|
103
113
|
)
|
104
114
|
is_external: Optional[bool] = Field(
|
105
115
|
alias="isExternal", serialization_alias="is_external", default=None
|
@@ -111,16 +121,22 @@ class OmicsVariantLoader(BaseModel):
|
|
111
121
|
alias="causesFrameshift", serialization_alias="causes_frameshift", default=None
|
112
122
|
)
|
113
123
|
utr_overlap: Optional[str] = Field(
|
114
|
-
alias="
|
124
|
+
alias="utrOverlap", serialization_alias="utr_overlap", default=None
|
115
125
|
)
|
116
126
|
|
117
127
|
# Outrider specific
|
118
128
|
padjust: Optional[float] = None
|
119
129
|
zscore: Optional[float] = Field(alias="zScore", serialization_alias="zscore", default=None)
|
120
130
|
l2fc: Optional[float] = None
|
121
|
-
|
122
|
-
|
123
|
-
|
131
|
+
raw_counts: Optional[int] = Field(
|
132
|
+
alias="rawcounts", serialization_alias="raw_counts", default=None
|
133
|
+
)
|
134
|
+
norm_counts: Optional[float] = Field(
|
135
|
+
alias="normcounts", serialization_alias="norm_counts", default=None
|
136
|
+
)
|
137
|
+
mean_corrected: Optional[float] = Field(
|
138
|
+
alias="meanCorrected", serialization_alias="mean_corrected", default=None
|
139
|
+
)
|
124
140
|
theta: Optional[float] = None
|
125
141
|
aberrant: Optional[bool] = None
|
126
142
|
aberrant_by_sample: Optional[float] = Field(
|
@@ -135,6 +151,13 @@ class OmicsVariantLoader(BaseModel):
|
|
135
151
|
alias="foldChange", serialization_alias="fold_change", default=None
|
136
152
|
)
|
137
153
|
|
154
|
+
@model_validator(mode="before")
|
155
|
+
@classmethod
|
156
|
+
def empty_str_to_none(cls, values):
|
157
|
+
if isinstance(values, dict):
|
158
|
+
return {k: (None if v == "" else v) for k, v in values.items()}
|
159
|
+
return values
|
160
|
+
|
138
161
|
@field_validator("chromosome")
|
139
162
|
def strip_chr(cls, chrom: str) -> str:
|
140
163
|
"""We store chromosome names without a chr prefix internally."""
|
@@ -162,8 +185,10 @@ class OmicsVariantLoader(BaseModel):
|
|
162
185
|
"""HGNC ids and gene symbols are found one on each line in DROP tsvs.
|
163
186
|
Convert to a list with a single member in omics_variants for storage."""
|
164
187
|
|
165
|
-
if "
|
166
|
-
values["
|
188
|
+
if "hgncId" in values:
|
189
|
+
values["hgncId"] = [int(values.get("hgncId"))]
|
190
|
+
elif "hgnc_id" in values:
|
191
|
+
values["hgncId"] = [int(values.get("hgnc_id"))]
|
167
192
|
|
168
193
|
if "hgncSymbol" in values:
|
169
194
|
values["hgncSymbol"] = [str(values.get("hgncSymbol"))]
|
@@ -206,14 +231,6 @@ class OmicsVariantLoader(BaseModel):
|
|
206
231
|
)
|
207
232
|
return values
|
208
233
|
|
209
|
-
@model_validator(mode="before")
|
210
|
-
def set_sample_display_name(cls, values) -> "OmicsVariantLoader":
|
211
|
-
"""Set a display name."""
|
212
|
-
values["display_name"] = values.get(
|
213
|
-
"display_name", values.get("sample_name", values.get("individual_id"))
|
214
|
-
)
|
215
|
-
return values
|
216
|
-
|
217
234
|
|
218
235
|
def get_qualification(values: dict) -> str:
|
219
236
|
"""Get qualification string for ID and display name.
|
@@ -109,7 +109,12 @@
|
|
109
109
|
{% endif %}
|
110
110
|
</td>
|
111
111
|
<td class="text-end">{{ '%.3e' % variant.p_value }}</td>
|
112
|
-
<td>{
|
112
|
+
<td>{% for sample in variant.samples %}
|
113
|
+
{% if sample.genotype_call != "./." %}
|
114
|
+
<div>{{ sample.display_name }}</div>
|
115
|
+
{% endif %}
|
116
|
+
{% endfor %}
|
117
|
+
</td>
|
113
118
|
<td class="text-end">{{ variant.chromosome }}</td>
|
114
119
|
<td class="text-end"><span style="white-space: nowrap;">{{ variant.position|human_longint|safe }}</span>-<span style="white-space: nowrap;">{{ variant.end|human_longint|safe }}</span>
|
115
120
|
{% if case.has_rna_tracks %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
{% from "utils.html" import activity_panel, comments_panel, pedigree_panel %}
|
3
3
|
{% from "variant/variant_details.html" import old_observations %}
|
4
4
|
{% from "variant/components.html" import external_scripts, external_stylesheets, matching_variants, variant_scripts %}
|
5
|
-
{% from "variant/utils.html" import causative_button, genes_panel, igv_track_selection, modal_causative, overlapping_panel, sv_alignments, pin_button, transcripts_panel, custom_annotations %}
|
5
|
+
{% from "variant/utils.html" import causative_button, genes_panel, igv_track_selection, modal_causative, overlapping_panel, sv_alignments, pin_button, transcripts_panel, custom_annotations, gene_panels %}
|
6
6
|
{% from "variant/rank_score_results.html" import rankscore_panel %}
|
7
7
|
{% from "variant/gene_disease_relations.html" import orpha_omim_phenotypes %}
|
8
8
|
{% from "variant/variant_details.html" import frequencies, gtcall_panel, observations_panel %}
|
@@ -189,10 +189,7 @@
|
|
189
189
|
{% endif %}
|
190
190
|
|
191
191
|
<div class="list-group-item">
|
192
|
-
|
193
|
-
{% for panel_id in variant.panels|sort(case_sensitive=False) %}
|
194
|
-
<a href="{{ url_for('panels.panel', panel_id=panel_id) }}">{{ panel_id }}</a>
|
195
|
-
{% endfor %}
|
192
|
+
{{ gene_panels(variant) }}
|
196
193
|
</div>
|
197
194
|
<div class="list-group mt-3">
|
198
195
|
<div>
|
@@ -443,3 +443,52 @@
|
|
443
443
|
</tbody>
|
444
444
|
</table>
|
445
445
|
{% endmacro %}
|
446
|
+
|
447
|
+
|
448
|
+
{% macro gene_panels(variant) %}
|
449
|
+
<strong>Gene panels:</strong><br>
|
450
|
+
{% for panel in variant.case_panels|sort(attribute='panel_name', case_sensitive=False)|rejectattr('removed') %}
|
451
|
+
{% set symbol_genes_counter = namespace(value=0) %}
|
452
|
+
{% set nosymbol_genes_counter = namespace(value=0) %}
|
453
|
+
<a
|
454
|
+
href="{{ url_for('panels.panel', panel_id=panel.panel_id) }}"
|
455
|
+
{#
|
456
|
+
Add hovertip listing occurence of each gene on selected panels, in the case
|
457
|
+
where variant covers multiple genes.
|
458
|
+
#}
|
459
|
+
{% if (variant.genes | length) > 1 %}
|
460
|
+
class="badge bg-secondary text-white"
|
461
|
+
data-bs-original-title="Genes on gene panel"
|
462
|
+
data-bs-toggle="popover"
|
463
|
+
data-bs-html="true"
|
464
|
+
data-bs-trigger="hover click"
|
465
|
+
data-bs-content="
|
466
|
+
|
467
|
+
{% for gene in variant.genes %}
|
468
|
+
{% if panel['panel_name'] in gene['associated_gene_panels'] %}
|
469
|
+
{% if symbol_genes_counter.value <= 30 %}
|
470
|
+
{% if gene.common %}
|
471
|
+
{{ gene.common.hgnc_symbol }}
|
472
|
+
{% else %}
|
473
|
+
{% for panel_gene in panel.genes %}
|
474
|
+
{% if gene.hgnc_id == panel_gene.hgnc_id %}
|
475
|
+
{{ panel_gene.symbol + " " }}
|
476
|
+
{% endif %}
|
477
|
+
{% endfor %}
|
478
|
+
{% endif %}
|
479
|
+
{% set symbol_genes_counter.value = symbol_genes_counter.value +1 %}
|
480
|
+
{% else %}
|
481
|
+
{% set nosymbol_genes_counter.value = nosymbol_genes_counter.value +1 %}
|
482
|
+
{% endif %}
|
483
|
+
{% endif %}
|
484
|
+
{% endfor %}
|
485
|
+
|
486
|
+
{% if nosymbol_genes_counter.value %}
|
487
|
+
+ {{nosymbol_genes_counter.value}} other genes
|
488
|
+
{% endif %}
|
489
|
+
|
490
|
+
"
|
491
|
+
{% endif %}
|
492
|
+
>{{ panel.panel_name }}</a>
|
493
|
+
{% endfor %}
|
494
|
+
{% endmacro %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
{% from "variant/buttons.html" import database_buttons %}
|
3
3
|
{% from "utils.html" import activity_panel, comments_panel, pedigree_panel %}
|
4
4
|
{% from "variants/utils.html" import compounds_table %}
|
5
|
-
{% from "variant/utils.html" import causative_button, genes_panel, modal_causative, overlapping_panel, pin_button, proteins_panel, transcripts_panel, custom_annotations %}
|
5
|
+
{% from "variant/utils.html" import causative_button, genes_panel, modal_causative, overlapping_panel, pin_button, proteins_panel, transcripts_panel, custom_annotations, gene_panels %}
|
6
6
|
{% from "variant/tx_overview.html" import disease_associated, transcripts_overview %}
|
7
7
|
{% from "variant/gene_disease_relations.html" import autozygosity_panel, genemodels_panel, inheritance_panel, orpha_omim_phenotypes %}
|
8
8
|
{% from "variant/variant_details.html" import conservations, frequencies, gtcall_panel, mappability, observations_panel, old_observations, severity_list, str_db_card %}
|
@@ -373,30 +373,7 @@
|
|
373
373
|
</table>
|
374
374
|
<ul class="list-group">
|
375
375
|
<div class="list-group-item">
|
376
|
-
|
377
|
-
{% for panel in variant.case_panels|sort(attribute='panel_name', case_sensitive=False)|rejectattr('removed') %}
|
378
|
-
<a
|
379
|
-
href="{{ url_for('panels.panel', panel_id=panel.panel_id) }}"
|
380
|
-
{#
|
381
|
-
Add hovertip listing occurence of each gene on selected panels, in the case
|
382
|
-
where variant covers multiple genes.
|
383
|
-
#}
|
384
|
-
{% if (variant.genes | length) > 1 %}
|
385
|
-
class="badge bg-secondary text-white"
|
386
|
-
data-bs-original-title="Genes on gene panel"
|
387
|
-
data-bs-toggle="popover"
|
388
|
-
data-bs-html="true"
|
389
|
-
data-bs-trigger="hover click"
|
390
|
-
data-bs-content="
|
391
|
-
{% for gene in variant.genes %}
|
392
|
-
{% if panel['panel_name'] in gene['associated_gene_panels'] %}
|
393
|
-
{{ gene.common.hgnc_symbol if gene.common else gene.hgnc_id }}
|
394
|
-
{% endif%}
|
395
|
-
{%endfor%}
|
396
|
-
"
|
397
|
-
{% endif %}
|
398
|
-
>{{ panel.panel_name }}</a>
|
399
|
-
{% endfor %}
|
376
|
+
{{ gene_panels(variant) }}
|
400
377
|
</div>
|
401
378
|
</ul>
|
402
379
|
{% if variant.category != "str" %}
|
@@ -612,12 +612,19 @@ def callers(variant_obj):
|
|
612
612
|
def associate_variant_genes_with_case_panels(case_obj: Dict, variant_obj: Dict) -> None:
|
613
613
|
"""Add associated gene panels to each gene in variant object"""
|
614
614
|
|
615
|
-
|
615
|
+
geneid_gene: Dict[int, dict] = {
|
616
|
+
gene["hgnc_id"]: gene for gene in variant_obj.get("genes", [])
|
617
|
+
} # This has max 30 elements for SVs
|
618
|
+
geneids: List[int] = variant_obj.get("hgnc_ids", []) # This can be a long list, n > 30 for SVs
|
616
619
|
|
617
|
-
for
|
618
|
-
hgnc_id = gene["hgnc_id"]
|
620
|
+
for hgnc_id in geneids:
|
619
621
|
matching_panels = []
|
620
622
|
for panel in case_obj.get("latest_panels", []):
|
621
623
|
if hgnc_id in panel["hgnc_ids"]:
|
622
624
|
matching_panels.append(panel["panel_name"])
|
623
|
-
|
625
|
+
if hgnc_id not in geneid_gene:
|
626
|
+
geneid_gene[hgnc_id] = {"hgnc_id": hgnc_id, "associated_gene_panels": matching_panels}
|
627
|
+
else:
|
628
|
+
geneid_gene[hgnc_id]["associated_gene_panels"] = matching_panels
|
629
|
+
|
630
|
+
variant_obj["genes"] = list(geneid_gene.values())
|
@@ -143,7 +143,7 @@
|
|
143
143
|
{% endmacro %}
|
144
144
|
|
145
145
|
{% macro gene_cell(variant) %}
|
146
|
-
<div class="
|
146
|
+
<div class="align-items-center">
|
147
147
|
{% if variant.category == "cancer" or variant.category == "sv_cancer" %}
|
148
148
|
<a data-bs-toggle="tooltip" data-bs-html="true" title="
|
149
149
|
<div>
|
@@ -367,6 +367,10 @@
|
|
367
367
|
{{ variant.max_exac_frequency|human_decimal if variant.max_exac_frequency }}
|
368
368
|
</div>
|
369
369
|
{% endif %}
|
370
|
+
{% if 'colorsdb_af' in variant %}
|
371
|
+
<strong>CoLoRSdb</strong>:
|
372
|
+
{{ variant.colorsdb_af|human_decimal if variant.colorsdb_af }}
|
373
|
+
{% endif %}
|
370
374
|
</div>
|
371
375
|
">
|
372
376
|
<div>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
scout/__init__.py,sha256=Z4liXvmEcLkC67ElsWvYHfemPKdWgWI5O6MB6XlDM8M,232
|
2
|
-
scout/__version__.py,sha256=
|
2
|
+
scout/__version__.py,sha256=S_OcuSdVnX0Ttyr8B4f0ZjvymKdWNJRBY3w6OlW0NKo,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
|
6
6
|
scout/adapter/mongo/acmg.py,sha256=v2Zuw-6APVmcnBnNXa18WJEu2vj5GUhZNiKMkruJsBI,4170
|
7
7
|
scout/adapter/mongo/base.py,sha256=1vX2QYqbVRLrFijpmAb1ENe6jaF2Bs5owwYa7MhY0vM,4341
|
8
|
-
scout/adapter/mongo/case.py,sha256=
|
8
|
+
scout/adapter/mongo/case.py,sha256=jaPcGd6s9SWFux0Tv6DX608J1tV2VIU2fGtoNE8undw,60307
|
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
|
@@ -19,7 +19,7 @@ scout/adapter/mongo/index.py,sha256=TZPVv6xBWsEtZpBUWp5uhjuPjQMfVss4lZZju49g1Lw,
|
|
19
19
|
scout/adapter/mongo/institute.py,sha256=GQmMKb_VzsvWwadp6gXHlSSpcG5ovF1ozdTzvpTFLpA,7025
|
20
20
|
scout/adapter/mongo/managed_variant.py,sha256=YFdnIhNVIawVhmlOxHOpe6sJyso0FCGdlXOXyhSWol8,8373
|
21
21
|
scout/adapter/mongo/matchmaker.py,sha256=amTvFOlUbrt1RmecY_8hPY6bO3j79lc2UbmzlCQcRuk,6378
|
22
|
-
scout/adapter/mongo/omics_variant.py,sha256=
|
22
|
+
scout/adapter/mongo/omics_variant.py,sha256=6VZOrq3VwNQnpXIcGs0zOvkhzHYwGJkzG1vFxwcnJu4,6938
|
23
23
|
scout/adapter/mongo/panel.py,sha256=KRerlJzlm-NZRihDMJzOiD9ECYqqsEkXxkbcLADL0mI,20921
|
24
24
|
scout/adapter/mongo/phenomodel.py,sha256=cypSS8YRzu98Bf1kC0orfrLNn_ZQSYCK8e4mNR5PaPY,2572
|
25
25
|
scout/adapter/mongo/query.py,sha256=bifYuJ5oGYY17No2K8SvbnwCC__R585NaVRJ1oQIVsg,32964
|
@@ -34,7 +34,7 @@ scout/build/acmg.py,sha256=M21MrrP_dtEyOuu6t-jBDdaqYcHPMLcwJlt9fHG2ycE,1523
|
|
34
34
|
scout/build/case.py,sha256=wJR3d1n3GMhfQudhSRJM0tust84MuOpOvRcGfx7H6sI,11329
|
35
35
|
scout/build/disease.py,sha256=Zew9AF_z1NbbKcO3uJZ2wgni501SkfnYRgnaCZ4m8FY,2020
|
36
36
|
scout/build/hpo.py,sha256=LJBCTq-x09D0CSKcUHB8a6ynuUrVh_7Ia0ooA1BxMys,1207
|
37
|
-
scout/build/individual.py,sha256=
|
37
|
+
scout/build/individual.py,sha256=a2L1NJF11oGaOU9LilWN5gftSyIRfk7H231mF2Y67WU,5232
|
38
38
|
scout/build/institute.py,sha256=CZKn-cFbh0cWO2ySoRV_P1nYFizlyvu50LKrtAz-PLo,1330
|
39
39
|
scout/build/managed_variant.py,sha256=krcQBc4LLxlnUQwXuV2FxNLiSkMoIkLxQueYFl04Vyo,1666
|
40
40
|
scout/build/panel.py,sha256=IrTPFPgqXnbE92vvHpa8NqnTRO7GqWcpPBCtMcdzV84,5348
|
@@ -46,7 +46,7 @@ scout/build/genes/transcript.py,sha256=qXdS7bU1d-ikgN8UOSyW7u34y-qpgcpVuCccP2tKR
|
|
46
46
|
scout/build/variant/__init__.py,sha256=Y70EK_8TS69seYSyIvL1Mek1FMo3XPeXcOnYVIOWggA,173
|
47
47
|
scout/build/variant/clnsig.py,sha256=uAfrf4RSUGliIp13fW9XqJshodNWxjuAwUbBbNHgmCc,719
|
48
48
|
scout/build/variant/compound.py,sha256=tYikQ4PmgAH1_yrE9uYaUX4_EoAs_XEiT8JWAjrZuDg,816
|
49
|
-
scout/build/variant/gene.py,sha256=
|
49
|
+
scout/build/variant/gene.py,sha256=Fj_ouJtNAZOvxYVo9oVXaYJE5_zx-mJqL-uOARD4ku8,3857
|
50
50
|
scout/build/variant/genotype.py,sha256=QDTZWFB8ix9Zd1m9UPWgT008i6rC7gT-uFzRr9GniDU,1009
|
51
51
|
scout/build/variant/transcript.py,sha256=hf_led1kdT3hVEwtHdORhBSk6a6o_zEDJ0z4ZF8IlFA,1205
|
52
52
|
scout/build/variant/variant.py,sha256=1BcGarXmLm8mUVmhwBWRBx9tt7C4Rwb8qBJ7STnsAqE,18509
|
@@ -102,7 +102,7 @@ scout/commands/update/compounds.py,sha256=vwCtb6045tGovKWHqY_uL8w1l9rZ_Hxlt0gUU0
|
|
102
102
|
scout/commands/update/disease.py,sha256=AajPLoEtd9YeU3jf7S7ZQRs3_o1H3GSxHsST_sVaIZQ,3846
|
103
103
|
scout/commands/update/genes.py,sha256=GhYIn2zWrAZMhdJjzzrpo8AquFqr7XOvosOk8lg4Zwk,6989
|
104
104
|
scout/commands/update/hpo.py,sha256=eyCuUlUwPmyP0oLh1olXhdqInlUXDdLe8ylgTlHWi-g,1339
|
105
|
-
scout/commands/update/individual.py,sha256=
|
105
|
+
scout/commands/update/individual.py,sha256=z2NY4f97GuYPRX7UCwSqbUMi-l-W0bRqN2xF6ilmKNU,4081
|
106
106
|
scout/commands/update/institute.py,sha256=ms8mmTGfCXqxeh_vSB1cdNDGrdHoSSgh9ryhB5GrJQc,1727
|
107
107
|
scout/commands/update/omim.py,sha256=s39qterBGhtBfW7Uc-IJabni93PIhT8shqVbkmQBb9k,2309
|
108
108
|
scout/commands/update/panel.py,sha256=990shZ15k5pwHUkd767o8oQ5iqVIpgRA7N_9yv1_eqc,2912
|
@@ -152,9 +152,9 @@ scout/demo/643594.clinical.str.stranger.vcf.gz,sha256=DpE8RC4T9WBWlIeqjFTqTy27-_
|
|
152
152
|
scout/demo/643594.clinical.str.stranger.vcf.gz.tbi,sha256=iK9m4kT4eZWcQxl_ajDB43Er8WD92Q0nxEe1jwYSZ_8,2809
|
153
153
|
scout/demo/643594.clinical.str.vcf.gz,sha256=ElvicUseKkN-DiZOQrFXstxy2jo9lhVMn58P_gvX-Zs,1631
|
154
154
|
scout/demo/643594.clinical.str.vcf.gz.tbi,sha256=pyWRI8-DlfGw08S66nYqLOthbaRaNMpAhUACm48iM5A,1695
|
155
|
-
scout/demo/643594.clinical.vcf.gz,sha256=
|
156
|
-
scout/demo/643594.clinical.vcf.gz.tbi,sha256=
|
157
|
-
scout/demo/643594.config.yaml,sha256
|
155
|
+
scout/demo/643594.clinical.vcf.gz,sha256=KpGBJPNfqOEE0uOkdldAeFRxdmPMPIlksiypXRhtOoE,409450
|
156
|
+
scout/demo/643594.clinical.vcf.gz.tbi,sha256=Pr1XyC4gonboAlTasdT-a7w7T8bNQXjV_G5hVdC9dy8,7732
|
157
|
+
scout/demo/643594.config.yaml,sha256=-6V9905gPYwFxNkxBKqqanTMrG1tbpMOH82udBz2HA0,5466
|
158
158
|
scout/demo/643594.ped,sha256=P-k5eZY78ZRtajMDQ_rr7Xv5oFhBO-vDc7whg36Jnw4,154
|
159
159
|
scout/demo/643594.ped_check.csv,sha256=36HoP13haqQerTEHuJF4R2r6Vh2AQilS1NTr7X6aoZs,444
|
160
160
|
scout/demo/643594.peddy.ped,sha256=msfhM3u_5hK_zjHhMas5Ns_KREllRyHN3kdTIVl5J-c,421
|
@@ -220,8 +220,8 @@ scout/demo/REViewer_test_data/catalog_test.json,sha256=PRW2kEHewbKSCDmeCroD_xr02
|
|
220
220
|
scout/demo/REViewer_test_data/justhusky_exphun_hugelymodelbat.vcf,sha256=vDxE9g39qagsLRP3NMQFTyk5LCQ0vB9VOpRQEsyCugg,16806
|
221
221
|
scout/demo/REViewer_test_data/justhusky_exphun_hugelymodelbat_realigned.bam,sha256=qfAKBgWxd3kgFeCRtobEpsblZ7MzujjGjxUhhMyXPUU,645353
|
222
222
|
scout/demo/REViewer_test_data/justhusky_exphun_hugelymodelbat_realigned.bam.bai,sha256=pLTfqUBXWwy7toazRJpwZjLvYFUQzyEe90XIK7aC20g,2928
|
223
|
-
scout/demo/drop/fraser_top_hits_clinical.tsv,sha256=
|
224
|
-
scout/demo/drop/outrider_top_hits_clinical.tsv,sha256=
|
223
|
+
scout/demo/drop/fraser_top_hits_clinical.tsv,sha256=muALwMo9jyF5c23tEHkg2K1mLtbvjiyeFcY6FM3AWqc,1406
|
224
|
+
scout/demo/drop/outrider_top_hits_clinical.tsv,sha256=A7umnUiyLcYDAyMNbauasaGjVcR-4UR6c2VFFe_LNwM,1980
|
225
225
|
scout/demo/images/chromograph_demo/autozygous_regions1.png,sha256=s38TohYneAt6BTdSpw6XS8nbI5gu8gIDMQlXAsnlWwM,1982
|
226
226
|
scout/demo/images/chromograph_demo/autozygous_regions10.png,sha256=0678vvwryBPQKmonC3HQ_KFDG120nHviVJlLhkR74QY,1782
|
227
227
|
scout/demo/images/chromograph_demo/autozygous_regions11.png,sha256=ZFGPlqMwgXx2M7myU1uViXSA333z0-gOFp134RrHl-E,1796
|
@@ -372,7 +372,7 @@ scout/load/hpo.py,sha256=ZWYjV9j6OfpI-ZZuhTQVEs_xgLa7ST2KuvYLW6ku0PY,2474
|
|
372
372
|
scout/load/institute.py,sha256=etmZ0CZRHOVi3f9R-wn5BK1pZPhtZwq2QYbh2RXXxDc,625
|
373
373
|
scout/load/panel.py,sha256=Zxv-ZlRyk7ZWKy1p0Cod-ATh7TzKqeMbiLu5I6-VEzs,10246
|
374
374
|
scout/load/report.py,sha256=TJvblks6Dp5-UDflWRTa8b3fe-A4bT4QnWT2yZLhfLA,820
|
375
|
-
scout/load/setup.py,sha256=
|
375
|
+
scout/load/setup.py,sha256=Xu-m59rJW5bF6Agf6XdiEo_Ik4ZAFfN0tF2FjLIMYAY,8218
|
376
376
|
scout/load/transcript.py,sha256=mk0Da7GWwqLVRp2xRD9mlzqaomH9R-TL2aKCJx4fEA8,4632
|
377
377
|
scout/log/__init__.py,sha256=ezc9URKnFoELUif9ZNqG6vNzXPOccGuDyzqoBngSIZo,63
|
378
378
|
scout/log/handlers.py,sha256=nwcSeqwtcesiIiEnpVOm7vTugDTOBodP6apm9Z1LIqk,1350
|
@@ -385,14 +385,14 @@ scout/models/event.py,sha256=2v9K7hbSa6bgadolGnGL7OymSibNGRyTZXlnL_SrFTM,1863
|
|
385
385
|
scout/models/hgnc_map.py,sha256=U2v7ie4BxQUVMXvyQoiAcXitNSrEAm_3F7DUkn10ivw,3975
|
386
386
|
scout/models/institute.py,sha256=jADVsDmPl2q6GfzoHkfAyyXa3J4E6ghrJl5m1DI6FiI,1854
|
387
387
|
scout/models/managed_variant.py,sha256=H6ak7su6n2fRB5o21JdAUNkxsNBeeQjRIgmUAqLB--w,2526
|
388
|
-
scout/models/omics_variant.py,sha256=
|
388
|
+
scout/models/omics_variant.py,sha256=GFe1IULUmW-ttZTefusruv5CoVNJOmo4AkovoThEZGg,9310
|
389
389
|
scout/models/panel.py,sha256=d5IhLcWqB9XiXCKZNzjaxz9f_bogqQ71wbVhAEqmujk,786
|
390
390
|
scout/models/phenomodel.py,sha256=UitSXqy41X4R7K6MT6EeLqZsKNKRhlEfnvXa-Brt2NA,1298
|
391
391
|
scout/models/phenotype_term.py,sha256=jY7dbfPzgE14M1gWqifm5YKkwMlrtfFa_WBHMT1_ogs,927
|
392
392
|
scout/models/user.py,sha256=oercrjpf9fLomqAcN0Fv1BL_XPjOrS_vchURo0RP7es,1134
|
393
393
|
scout/models/case/__init__.py,sha256=Sqczn7Wm9KYZtPGAHCvwX_6j9vlaK-0myJtSDlS-448,121
|
394
|
-
scout/models/case/case.py,sha256=
|
395
|
-
scout/models/case/case_loading_models.py,sha256=
|
394
|
+
scout/models/case/case.py,sha256=Wu2D6IZKkFXLeF7emcBr7n1HQ7Mj9rO-cN-8T9rhkSU,5282
|
395
|
+
scout/models/case/case_loading_models.py,sha256=Xd7K5zgFOVLTK7NZboYK8JBvYJ6xUG-yLcWEgwGEnFY,21441
|
396
396
|
scout/models/variant/__init__.py,sha256=H-IZ2hSTSVS28S8FZzA8j2Cyu1PHQFXyMWJFtCucPAk,40
|
397
397
|
scout/models/variant/gene.py,sha256=98CG_JcAklGGFIrUulf1_olQalV65kXQO-gOf7VQZ0A,1095
|
398
398
|
scout/models/variant/transcript.py,sha256=rfflEbTs7Bn4HDENqrxtGopQ_0HKnrVLLyBcrj4NpwM,1720
|
@@ -538,7 +538,7 @@ scout/server/blueprints/managed_variants/templates/managed_variants/managed_vari
|
|
538
538
|
scout/server/blueprints/omics_variants/__init__.py,sha256=8UVXrChArhIvMxtgUcG-udvmlTn56q41iy-naOZw5us,37
|
539
539
|
scout/server/blueprints/omics_variants/controllers.py,sha256=AnM70stvLniJIU3pFUX-InNjuT-7K0RpuAEYa7vM-jw,3912
|
540
540
|
scout/server/blueprints/omics_variants/views.py,sha256=4_wOqAhu_Zl6heqm7ilE8y8xOfy3PU532rkp_H0KZFg,3724
|
541
|
-
scout/server/blueprints/omics_variants/templates/omics_variants/outliers.html,sha256=
|
541
|
+
scout/server/blueprints/omics_variants/templates/omics_variants/outliers.html,sha256=E9FhdrYQuLYbB9sk9ct89cWVmbetZFJDCQTqVxWdVrM,13274
|
542
542
|
scout/server/blueprints/panels/__init__.py,sha256=usxBF0O7zNX1d9jt-8DRoFZwcfHHS96Gv87LDr1AgG4,53
|
543
543
|
scout/server/blueprints/panels/controllers.py,sha256=apNwdE8gphRTViChoL_yfBJP-H1BfpyAyrIJMv88d9c,12659
|
544
544
|
scout/server/blueprints/panels/forms.py,sha256=DYlhYpnpv7ehf9JlY3HRFwy-TZ5QDHB0RIRaNTAW1jQ,696
|
@@ -597,7 +597,7 @@ scout/server/blueprints/public/static/ideograms/chromosome-Y.png,sha256=KlOsBLZY
|
|
597
597
|
scout/server/blueprints/public/templates/public/index.html,sha256=kl_-1s4HXRGw_PWacRFHG3cHALBBMN54GJVBnAAZ7LE,3626
|
598
598
|
scout/server/blueprints/variant/__init__.py,sha256=SlD8-Aoj9Jq9aVTJjtFfsu-0sUVfkzpiEXcH8z9q6dI,54
|
599
599
|
scout/server/blueprints/variant/controllers.py,sha256=2XEBrvq4kXNA2Mj1G6GMfWHphEfgafDewoqFW32Q0PQ,25160
|
600
|
-
scout/server/blueprints/variant/utils.py,sha256=
|
600
|
+
scout/server/blueprints/variant/utils.py,sha256=MCz_CPH10eOS-WYvEmJaNXxsJMzav822zTvfiQnBx8U,23045
|
601
601
|
scout/server/blueprints/variant/verification_controllers.py,sha256=eKzP222e7xuFOaQaI9MLOrD9RWtI8uGB1cJYbcXLzF0,10972
|
602
602
|
scout/server/blueprints/variant/views.py,sha256=jz5kFRCLhEVRQKFJtKmG0Nq4TX6ofEeyA9zPHE7b1FQ,14768
|
603
603
|
scout/server/blueprints/variant/templates/variant/acmg.html,sha256=ubitRnQoADLLOptwMgsPLb1AXhwZgV1YlN504VaC2lY,7754
|
@@ -608,10 +608,10 @@ scout/server/blueprints/variant/templates/variant/gene_disease_relations.html,sh
|
|
608
608
|
scout/server/blueprints/variant/templates/variant/rank_score_results.html,sha256=32RfBrpZ_J-1WYE01Bdd5IC9i1MAzXT7GF27OlElk94,2040
|
609
609
|
scout/server/blueprints/variant/templates/variant/sanger.html,sha256=0kVnscTw3KUwjR4QOEuNJMOK9eADGEn9qGNtGx2ST7Y,4507
|
610
610
|
scout/server/blueprints/variant/templates/variant/str-variant-reviewer.html,sha256=QETzTkzXhFBd7-20OrLMCd1QSgzOxeE7Lv_Iged5BB0,2220
|
611
|
-
scout/server/blueprints/variant/templates/variant/sv-variant.html,sha256=
|
611
|
+
scout/server/blueprints/variant/templates/variant/sv-variant.html,sha256=8199JLlkuNOLI88hSwgtPxKjk9SDyhNS-WJR1S7mnFs,16978
|
612
612
|
scout/server/blueprints/variant/templates/variant/tx_overview.html,sha256=turyCoOCCd_N80FakxXfIl7q_WViysz1fwx3j312_Lg,6737
|
613
|
-
scout/server/blueprints/variant/templates/variant/utils.html,sha256=
|
614
|
-
scout/server/blueprints/variant/templates/variant/variant.html,sha256=
|
613
|
+
scout/server/blueprints/variant/templates/variant/utils.html,sha256=4FGPa1B1lKwtqi3BTi9noerkMp7cAkWX4pvfjvINIs8,23345
|
614
|
+
scout/server/blueprints/variant/templates/variant/variant.html,sha256=I7zb4Yqwq0UsUV9UoefPlsfVQpSnqlBkxWoIdFPtn04,17845
|
615
615
|
scout/server/blueprints/variant/templates/variant/variant_details.html,sha256=J-pF8LRXFnCxIbNfL7klTLj172rlpWF8PznO4ie9Igc,19921
|
616
616
|
scout/server/blueprints/variants/__init__.py,sha256=W1KCz9kEbVlNO0o3NvLitYLQoP_3JSJ5KSjhpcjlUBQ,55
|
617
617
|
scout/server/blueprints/variants/controllers.py,sha256=DQeqtQtVX4p__AanxChWxWxdQ65_p5etSFQZEj_leDQ,72616
|
@@ -621,7 +621,7 @@ scout/server/blueprints/variants/views.py,sha256=r2T3eLAG_qrZ2vl3Ar2k6K1KRB7J6z5
|
|
621
621
|
scout/server/blueprints/variants/static/form_scripts.js,sha256=o3GCboaesA9Sm1HgejS_yQwt0I-NTkvcl56jiBdLqZs,8319
|
622
622
|
scout/server/blueprints/variants/templates/variants/cancer-sv-variants.html,sha256=Y7XQZjjrU_cJGU8EEGEF3QzTVvDfEVudFdygYExVxwI,7429
|
623
623
|
scout/server/blueprints/variants/templates/variants/cancer-variants.html,sha256=bX9FLoufo72PBDoWp95DVLltxUrbLeuFmZQObP1oAlw,10132
|
624
|
-
scout/server/blueprints/variants/templates/variants/components.html,sha256=
|
624
|
+
scout/server/blueprints/variants/templates/variants/components.html,sha256=1fpE1CFCAqmCLmLg1KlD1emcIwJItuOL0JiLKdw-j94,16854
|
625
625
|
scout/server/blueprints/variants/templates/variants/fusion-variants.html,sha256=XGaLgWobzeFHwyQLXr_Yq9THssf8tGU91VbFKdGOFBg,4801
|
626
626
|
scout/server/blueprints/variants/templates/variants/indicators.html,sha256=BX6Wg8OpsALCGGozR1eXT57D0Ixrf-OFXVg6G20Wjr0,4400
|
627
627
|
scout/server/blueprints/variants/templates/variants/mei-variants.html,sha256=0-wYjaiUByDduWMgmRS4AMg3IppPNtjZL1vvAdFuIPI,5994
|
@@ -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.
|
675
|
-
scout_browser-4.
|
676
|
-
scout_browser-4.
|
677
|
-
scout_browser-4.
|
678
|
-
scout_browser-4.
|
679
|
-
scout_browser-4.
|
674
|
+
scout_browser-4.88.dist-info/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
|
675
|
+
scout_browser-4.88.dist-info/METADATA,sha256=BjcwhCYLPRAApIAEFM5xImwK7VtYpfKusrs6E9u73nw,14260
|
676
|
+
scout_browser-4.88.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
677
|
+
scout_browser-4.88.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
|
678
|
+
scout_browser-4.88.dist-info/top_level.txt,sha256=qM75h71bztMaLYsxn1up4c_n2rjc_ZnyaW6Q0K5uOXc,6
|
679
|
+
scout_browser-4.88.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|