scout-browser 4.88.1__py3-none-any.whl → 4.89__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/base.py +1 -1
- scout/adapter/mongo/case.py +185 -117
- scout/adapter/mongo/omics_variant.py +19 -0
- scout/build/case.py +1 -0
- scout/commands/load/variants.py +121 -40
- scout/commands/update/case.py +56 -10
- scout/constants/case_tags.py +5 -0
- scout/constants/disease_parsing.py +2 -2
- scout/constants/igv_tracks.py +2 -2
- scout/constants/indexes.py +8 -1
- scout/demo/643594.config.yaml +1 -0
- scout/demo/panel_1.txt +2 -0
- scout/demo/resources/ensembl_exons_37_reduced.txt +135 -0
- scout/demo/resources/ensembl_exons_38_reduced.txt +166 -0
- scout/demo/resources/ensembl_genes_37_reduced.txt +2 -0
- scout/demo/resources/ensembl_genes_38_reduced.txt +2 -0
- scout/demo/resources/ensembl_transcripts_37_reduced.txt +27 -0
- scout/demo/resources/ensembl_transcripts_38_reduced.txt +36 -0
- scout/demo/resources/hgnc_reduced_set.txt +2 -0
- scout/log/handlers.py +2 -1
- scout/log/log.py +48 -61
- scout/models/case/case_loading_models.py +2 -0
- scout/parse/omim.py +2 -2
- scout/server/app.py +23 -7
- scout/server/blueprints/alignviewers/controllers.py +46 -23
- scout/server/blueprints/cases/controllers.py +21 -47
- scout/server/blueprints/cases/templates/cases/case_report.html +4 -1
- scout/server/blueprints/cases/templates/cases/case_sma.html +19 -0
- scout/server/blueprints/cases/templates/cases/collapsible_actionbar.html +7 -7
- scout/server/blueprints/cases/templates/cases/individuals_table.html +1 -1
- scout/server/blueprints/clinvar/form.py +1 -1
- scout/server/blueprints/clinvar/templates/clinvar/clinvar_submissions.html +2 -2
- scout/server/blueprints/clinvar/templates/clinvar/multistep_add_variant.html +9 -3
- scout/server/blueprints/institutes/controllers.py +11 -38
- scout/server/blueprints/institutes/forms.py +18 -4
- scout/server/blueprints/institutes/templates/overview/cases.html +137 -46
- scout/server/blueprints/login/views.py +16 -12
- scout/server/blueprints/panels/controllers.py +4 -1
- scout/server/blueprints/panels/templates/panels/panel.html +1 -1
- scout/server/blueprints/panels/templates/panels/panels.html +5 -5
- scout/server/blueprints/public/templates/public/index.html +18 -10
- scout/server/blueprints/variant/templates/variant/components.html +0 -1
- scout/server/blueprints/variant/templates/variant/gene_disease_relations.html +1 -1
- scout/server/config.py +3 -0
- scout/server/extensions/__init__.py +2 -0
- scout/server/extensions/chanjo2_extension.py +46 -0
- scout/server/extensions/chanjo_extension.py +44 -1
- scout/server/extensions/matchmaker_extension.py +0 -1
- scout/server/links.py +11 -2
- scout/server/templates/report_base.html +1 -0
- scout/utils/convert.py +1 -1
- scout/utils/date.py +1 -1
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/METADATA +1 -1
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/RECORD +59 -58
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/LICENSE +0 -0
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/WHEEL +0 -0
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/entry_points.txt +0 -0
- {scout_browser-4.88.1.dist-info → scout_browser-4.89.dist-info}/top_level.txt +0 -0
@@ -15662,6 +15662,172 @@ Chromosome/scaffold name Gene stable ID Transcript stable ID Exon stable ID Exon
|
|
15662
15662
|
5 ENSG00000170458 ENST00000401743 ENSE00001862834 140011313 140012565 140011313 140011440 -1 3
|
15663
15663
|
5 ENSG00000170458 ENST00000401743 ENSE00001429397 140012654 140012877 140012657 140012877 -1 2
|
15664
15664
|
5 ENSG00000170458 ENST00000401743 ENSE00001554029 140013116 140013286 140013116 140013286 -1 1
|
15665
|
+
5 ENSG00000205571 ENST00000511812 ENSE00002054021 70049638 70049766 70049638 70049685 1 1
|
15666
|
+
5 ENSG00000205571 ENST00000511812 ENSE00001725187 70063415 70063486 1 2
|
15667
|
+
5 ENSG00000205571 ENST00000511812 ENSE00003668426 70065965 70066084 1 3
|
15668
|
+
5 ENSG00000205571 ENST00000511812 ENSE00003698225 70067294 70067446 1 4
|
15669
|
+
5 ENSG00000205571 ENST00000511812 ENSE00003550962 70069235 70069330 1 5
|
15670
|
+
5 ENSG00000205571 ENST00000511812 ENSE00003620900 70070641 70070751 1 6
|
15671
|
+
5 ENSG00000205571 ENST00000511812 ENSE00002055618 70076521 70076706 70076572 70076706 1 7
|
15672
|
+
5 ENSG00000205571 ENST00000626847 ENSE00001725187 70063415 70063486 1 2
|
15673
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003668426 70065965 70066084 1 3
|
15674
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003698225 70067294 70067446 1 5
|
15675
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003550962 70069235 70069330 1 6
|
15676
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003620900 70070641 70070751 1 7
|
15677
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003762300 70049654 70049766 70049654 70049685 1 1
|
15678
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003579743 70066934 70067134 1 4
|
15679
|
+
5 ENSG00000205571 ENST00000626847 ENSE00003765895 70077019 70077592 70077034 70077592 1 8
|
15680
|
+
5 ENSG00000205571 ENST00000506734 ENSE00001725187 70063415 70063486 1 2
|
15681
|
+
5 ENSG00000205571 ENST00000506734 ENSE00003668426 70065965 70066084 1 3
|
15682
|
+
5 ENSG00000205571 ENST00000506734 ENSE00003698225 70067294 70067446 1 5
|
15683
|
+
5 ENSG00000205571 ENST00000506734 ENSE00003550962 70069235 70069330 1 6
|
15684
|
+
5 ENSG00000205571 ENST00000506734 ENSE00003620900 70070641 70070751 1 7
|
15685
|
+
5 ENSG00000205571 ENST00000506734 ENSE00003579743 70066934 70067134 1 4
|
15686
|
+
5 ENSG00000205571 ENST00000506734 ENSE00002041070 70049657 70049766 70049657 70049685 1 1
|
15687
|
+
5 ENSG00000205571 ENST00000506734 ENSE00002038304 70071282 70071390 70071333 70071390 1 8
|
15688
|
+
5 ENSG00000205571 ENST00000506734 ENSE00002033350 70077019 70077596 70077019 70077596 1 9
|
15689
|
+
5 ENSG00000205571 ENST00000380742 ENSE00001725187 70063415 70063486 1 2
|
15690
|
+
5 ENSG00000205571 ENST00000380742 ENSE00003668426 70065965 70066084 1 3
|
15691
|
+
5 ENSG00000205571 ENST00000380742 ENSE00003698225 70067294 70067446 1 5
|
15692
|
+
5 ENSG00000205571 ENST00000380742 ENSE00003620900 70070641 70070751 1 6
|
15693
|
+
5 ENSG00000205571 ENST00000380742 ENSE00003579743 70066934 70067134 1 4
|
15694
|
+
5 ENSG00000205571 ENST00000380742 ENSE00001897950 70049664 70049766 70049664 70049685 1 1
|
15695
|
+
5 ENSG00000205571 ENST00000380742 ENSE00003698693 70076521 70076574 70076572 70076574 1 7
|
15696
|
+
5 ENSG00000205571 ENST00000380742 ENSE00001812360 70077019 70077592 70077019 70077592 1 8
|
15697
|
+
5 ENSG00000205571 ENST00000380743 ENSE00001725187 70063415 70063486 1 2
|
15698
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003668426 70065965 70066084 1 3
|
15699
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003698225 70067294 70067446 1 5
|
15700
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003550962 70069235 70069330 1 6
|
15701
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003620900 70070641 70070751 1 7
|
15702
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003579743 70066934 70067134 1 4
|
15703
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003698693 70076521 70076574 70076572 70076574 1 8
|
15704
|
+
5 ENSG00000205571 ENST00000380743 ENSE00001904512 70049669 70049766 70049669 70049685 1 1
|
15705
|
+
5 ENSG00000205571 ENST00000380743 ENSE00003898412 70077019 70077595 70077019 70077595 1 9
|
15706
|
+
5 ENSG00000205571 ENST00000628696 ENSE00001725187 70063415 70063486 1 2
|
15707
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003668426 70065965 70066084 1 3
|
15708
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003698225 70067294 70067446 1 5
|
15709
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003550962 70069235 70069330 1 6
|
15710
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003620900 70070641 70070751 1 7
|
15711
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003579743 70066934 70067134 1 4
|
15712
|
+
5 ENSG00000205571 ENST00000628696 ENSE00001792916 70049686 70049766 1 1
|
15713
|
+
5 ENSG00000205571 ENST00000628696 ENSE00003762314 70071282 70071332 1 8
|
15714
|
+
5 ENSG00000205571 ENST00000380741 ENSE00001725187 70063415 70063486 1 2
|
15715
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003668426 70065965 70066084 1 3
|
15716
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003698225 70067294 70067446 1 5
|
15717
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003550962 70069235 70069330 1 6
|
15718
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003620900 70070641 70070751 1 7
|
15719
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003579743 70066934 70067134 1 4
|
15720
|
+
5 ENSG00000205571 ENST00000380741 ENSE00001792916 70049686 70049766 1 1
|
15721
|
+
5 ENSG00000205571 ENST00000380741 ENSE00003723821 70076521 70076586 70076572 70076586 1 8
|
15722
|
+
5 ENSG00000205571 ENST00000614240 ENSE00001725187 70063415 70063486 1 2
|
15723
|
+
5 ENSG00000205571 ENST00000614240 ENSE00003668426 70065965 70066084 1 3
|
15724
|
+
5 ENSG00000205571 ENST00000614240 ENSE00003698225 70067294 70067446 1 5
|
15725
|
+
5 ENSG00000205571 ENST00000614240 ENSE00003620900 70070641 70070751 1 6
|
15726
|
+
5 ENSG00000205571 ENST00000614240 ENSE00003579743 70066934 70067134 1 4
|
15727
|
+
5 ENSG00000205571 ENST00000614240 ENSE00001792916 70049686 70049766 1 1
|
15728
|
+
5 ENSG00000205571 ENST00000614240 ENSE00003723821 70076521 70076586 70076572 70076586 1 7
|
15729
|
+
5 ENSG00000205571 ENST00000503678 ENSE00002056052 70063411 70063486 1 1
|
15730
|
+
5 ENSG00000205571 ENST00000503678 ENSE00003685383 70065965 70066084 1 2
|
15731
|
+
5 ENSG00000205571 ENST00000503678 ENSE00003650356 70066934 70067134 1 3
|
15732
|
+
5 ENSG00000205571 ENST00000503678 ENSE00003700892 70067294 70067446 1 4
|
15733
|
+
5 ENSG00000205571 ENST00000503678 ENSE00003668557 70069235 70069330 1 5
|
15734
|
+
5 ENSG00000205571 ENST00000503678 ENSE00002064131 70070641 70070755 1 6
|
15735
|
+
5 ENSG00000205571 ENST00000511873 ENSE00003698225 70067294 70067446 1 2
|
15736
|
+
5 ENSG00000205571 ENST00000511873 ENSE00003668557 70069235 70069330 70069235 70069330 1 4
|
15737
|
+
5 ENSG00000205571 ENST00000511873 ENSE00002038537 70067084 70067134 1 1
|
15738
|
+
5 ENSG00000205571 ENST00000511873 ENSE00002050020 70069026 70069142 70069062 70069142 1 3
|
15739
|
+
5 ENSG00000205571 ENST00000511873 ENSE00003697649 70070641 70070654 70070641 70070654 1 5
|
15740
|
+
5 ENSG00000205571 ENST00000509805 ENSE00003700892 70067294 70067446 1 2
|
15741
|
+
5 ENSG00000205571 ENST00000509805 ENSE00003668557 70069235 70069330 1 3
|
15742
|
+
5 ENSG00000205571 ENST00000509805 ENSE00002036057 70067094 70067134 1 1
|
15743
|
+
5 ENSG00000205571 ENST00000509805 ENSE00002062850 70070641 70070849 1 4
|
15744
|
+
5 ENSG00000205571 ENST00000505346 ENSE00003700892 70067294 70067446 1 2
|
15745
|
+
5 ENSG00000205571 ENST00000505346 ENSE00002067458 70067099 70067134 1 1
|
15746
|
+
5 ENSG00000205571 ENST00000505346 ENSE00003529016 70070641 70070751 1 3
|
15747
|
+
5 ENSG00000205571 ENST00000505346 ENSE00002073006 70076521 70076927 1 4
|
15748
|
+
5 ENSG00000205571 ENST00000514914 ENSE00003668557 70069235 70069330 1 2
|
15749
|
+
5 ENSG00000205571 ENST00000514914 ENSE00003529016 70070641 70070751 1 3
|
15750
|
+
5 ENSG00000205571 ENST00000514914 ENSE00002051731 70067279 70067446 1 1
|
15751
|
+
5 ENSG00000205571 ENST00000514914 ENSE00003696722 70076521 70076574 1 4
|
15752
|
+
5 ENSG00000205571 ENST00000514914 ENSE00002023398 70077019 70077251 1 5
|
15753
|
+
5 ENSG00000205571 ENST00000508258 ENSE00002032527 70069233 70069330 1 1
|
15754
|
+
5 ENSG00000205571 ENST00000508258 ENSE00002041684 70070641 70070753 1 2
|
15755
|
+
5 ENSG00000205571 ENST00000507458 ENSE00003698693 70076521 70076574 70076572 70076574 1 2
|
15756
|
+
5 ENSG00000205571 ENST00000507458 ENSE00002036578 70070664 70070751 1 1
|
15757
|
+
5 ENSG00000205571 ENST00000507458 ENSE00002067548 70077019 70077160 70077019 70077160 1 3
|
15758
|
+
5 ENSG00000205571 ENST00000507458 ENSE00002085226 70077762 70078522 70077762 70078522 1 4
|
15759
|
+
5 ENSG00000172062 ENST00000503079 ENSE00001922009 70925030 70925184 70925030 70925103 1 1
|
15760
|
+
5 ENSG00000172062 ENST00000503079 ENSE00001688516 70938839 70938910 1 2
|
15761
|
+
5 ENSG00000172062 ENST00000503079 ENSE00001638255 70941389 70941508 1 3
|
15762
|
+
5 ENSG00000172062 ENST00000503079 ENSE00001766361 70942358 70942558 1 4
|
15763
|
+
5 ENSG00000172062 ENST00000503079 ENSE00003576392 70942718 70942870 1 5
|
15764
|
+
5 ENSG00000172062 ENST00000503079 ENSE00001593733 70946066 70946176 1 6
|
15765
|
+
5 ENSG00000172062 ENST00000503079 ENSE00002062475 70951941 70952347 70951992 70952347 1 7
|
15766
|
+
5 ENSG00000172062 ENST00000514951 ENSE00001688516 70938839 70938910 1 2
|
15767
|
+
5 ENSG00000172062 ENST00000514951 ENSE00001638255 70941389 70941508 1 3
|
15768
|
+
5 ENSG00000172062 ENST00000514951 ENSE00003576392 70942718 70942870 1 4
|
15769
|
+
5 ENSG00000172062 ENST00000514951 ENSE00001593733 70946066 70946176 1 6
|
15770
|
+
5 ENSG00000172062 ENST00000514951 ENSE00002034950 70925056 70925184 70925056 70925103 1 1
|
15771
|
+
5 ENSG00000172062 ENST00000514951 ENSE00003611930 70944658 70944753 1 5
|
15772
|
+
5 ENSG00000172062 ENST00000514951 ENSE00002045198 70951941 70952567 70951992 70952567 1 7
|
15773
|
+
5 ENSG00000172062 ENST00000506239 ENSE00001688516 70938839 70938910 1 2
|
15774
|
+
5 ENSG00000172062 ENST00000506239 ENSE00001638255 70941389 70941508 1 3
|
15775
|
+
5 ENSG00000172062 ENST00000506239 ENSE00001766361 70942358 70942558 1 4
|
15776
|
+
5 ENSG00000172062 ENST00000506239 ENSE00003576392 70942718 70942870 1 5
|
15777
|
+
5 ENSG00000172062 ENST00000506239 ENSE00001593733 70946066 70946176 1 7
|
15778
|
+
5 ENSG00000172062 ENST00000506239 ENSE00003611930 70944658 70944753 1 6
|
15779
|
+
5 ENSG00000172062 ENST00000506239 ENSE00002073998 70925075 70925184 70925075 70925103 1 1
|
15780
|
+
5 ENSG00000172062 ENST00000506239 ENSE00002042046 70946707 70946815 70946758 70946815 1 8
|
15781
|
+
5 ENSG00000172062 ENST00000506239 ENSE00002052357 70952439 70953016 70952439 70953016 1 9
|
15782
|
+
5 ENSG00000172062 ENST00000380707 ENSE00001688516 70938839 70938910 1 2
|
15783
|
+
5 ENSG00000172062 ENST00000380707 ENSE00001638255 70941389 70941508 1 3
|
15784
|
+
5 ENSG00000172062 ENST00000380707 ENSE00001766361 70942358 70942558 1 4
|
15785
|
+
5 ENSG00000172062 ENST00000380707 ENSE00003576392 70942718 70942870 1 5
|
15786
|
+
5 ENSG00000172062 ENST00000380707 ENSE00001593733 70946066 70946176 1 7
|
15787
|
+
5 ENSG00000172062 ENST00000380707 ENSE00003611930 70944658 70944753 1 6
|
15788
|
+
5 ENSG00000172062 ENST00000380707 ENSE00003899118 70925087 70925184 70925087 70925103 1 1
|
15789
|
+
5 ENSG00000172062 ENST00000380707 ENSE00003693452 70951941 70951994 70951992 70951994 1 8
|
15790
|
+
5 ENSG00000172062 ENST00000380707 ENSE00001885073 70952439 70953015 70952439 70953015 1 9
|
15791
|
+
5 ENSG00000172062 ENST00000506163 ENSE00001688516 70938839 70938910 1 2
|
15792
|
+
5 ENSG00000172062 ENST00000506163 ENSE00001638255 70941389 70941508 1 3
|
15793
|
+
5 ENSG00000172062 ENST00000506163 ENSE00001766361 70942358 70942558 1 4
|
15794
|
+
5 ENSG00000172062 ENST00000506163 ENSE00003576392 70942718 70942870 1 5
|
15795
|
+
5 ENSG00000172062 ENST00000506163 ENSE00001593733 70946066 70946176 1 7
|
15796
|
+
5 ENSG00000172062 ENST00000506163 ENSE00003611930 70944658 70944753 1 6
|
15797
|
+
5 ENSG00000172062 ENST00000506163 ENSE00002033586 70925095 70925184 70925095 70925103 1 1
|
15798
|
+
5 ENSG00000172062 ENST00000506163 ENSE00002025434 70952439 70953040 70952454 70953040 1 8
|
15799
|
+
5 ENSG00000172062 ENST00000625245 ENSE00001688516 70938839 70938910 1 2
|
15800
|
+
5 ENSG00000172062 ENST00000625245 ENSE00001638255 70941389 70941508 1 3
|
15801
|
+
5 ENSG00000172062 ENST00000625245 ENSE00001766361 70942358 70942558 1 4
|
15802
|
+
5 ENSG00000172062 ENST00000625245 ENSE00003576392 70942718 70942870 1 5
|
15803
|
+
5 ENSG00000172062 ENST00000625245 ENSE00001593733 70946066 70946176 1 7
|
15804
|
+
5 ENSG00000172062 ENST00000625245 ENSE00003611930 70944658 70944753 1 6
|
15805
|
+
5 ENSG00000172062 ENST00000625245 ENSE00001695536 70925104 70925184 1 1
|
15806
|
+
5 ENSG00000172062 ENST00000625245 ENSE00003771397 70946707 70946757 1 8
|
15807
|
+
5 ENSG00000172062 ENST00000351205 ENSE00001688516 70938839 70938910 1 2
|
15808
|
+
5 ENSG00000172062 ENST00000351205 ENSE00001638255 70941389 70941508 1 3
|
15809
|
+
5 ENSG00000172062 ENST00000351205 ENSE00001766361 70942358 70942558 1 4
|
15810
|
+
5 ENSG00000172062 ENST00000351205 ENSE00003576392 70942718 70942870 1 5
|
15811
|
+
5 ENSG00000172062 ENST00000351205 ENSE00001593733 70946066 70946176 1 7
|
15812
|
+
5 ENSG00000172062 ENST00000351205 ENSE00003611930 70944658 70944753 1 6
|
15813
|
+
5 ENSG00000172062 ENST00000351205 ENSE00001695536 70925104 70925184 1 1
|
15814
|
+
5 ENSG00000172062 ENST00000351205 ENSE00003727855 70951941 70952006 70951992 70952006 1 8
|
15815
|
+
5 ENSG00000172062 ENST00000518504 ENSE00002115234 70942472 70942558 1 1
|
15816
|
+
5 ENSG00000172062 ENST00000518504 ENSE00003586477 70942718 70942870 1 2
|
15817
|
+
5 ENSG00000172062 ENST00000518504 ENSE00002067240 70946066 70946278 1 3
|
15818
|
+
5 ENSG00000172062 ENST00000507905 ENSE00003576392 70942718 70942870 1 2
|
15819
|
+
5 ENSG00000172062 ENST00000507905 ENSE00002065935 70942508 70942558 1 1
|
15820
|
+
5 ENSG00000172062 ENST00000507905 ENSE00002019326 70944449 70944565 70944485 70944565 1 3
|
15821
|
+
5 ENSG00000172062 ENST00000507905 ENSE00003477349 70944658 70944753 70944658 70944753 1 4
|
15822
|
+
5 ENSG00000172062 ENST00000507905 ENSE00002110817 70946066 70946079 70946066 70946079 1 5
|
15823
|
+
5 ENSG00000172062 ENST00000513228 ENSE00003586477 70942718 70942870 1 2
|
15824
|
+
5 ENSG00000172062 ENST00000513228 ENSE00003477349 70944658 70944753 1 3
|
15825
|
+
5 ENSG00000172062 ENST00000513228 ENSE00002053468 70942518 70942558 1 1
|
15826
|
+
5 ENSG00000172062 ENST00000513228 ENSE00002065580 70946066 70946274 1 4
|
15827
|
+
5 ENSG00000172062 ENST00000510679 ENSE00002063740 70946089 70946176 1 1
|
15828
|
+
5 ENSG00000172062 ENST00000510679 ENSE00003581587 70951941 70951994 1 2
|
15829
|
+
5 ENSG00000172062 ENST00000510679 ENSE00002068209 70952439 70952580 1 3
|
15830
|
+
5 ENSG00000172062 ENST00000510679 ENSE00002084907 70953182 70953942 1 4
|
15665
15831
|
6 ENSG00000118503 ENST00000421450 ENSE00001636894 138188351 138188679 138188351 138188679 1 1
|
15666
15832
|
6 ENSG00000118503 ENST00000421450 ENSE00001724607 138192350 138192441 138192350 138192364 1 2
|
15667
15833
|
6 ENSG00000118503 ENST00000420009 ENSE00001680250 138188459 138188655 138188459 138188655 1 1
|
@@ -194,6 +194,8 @@ Chromosome/scaffold name Gene start (bp) Gene end (bp) Gene stable ID HGNC symbo
|
|
194
194
|
5 1392909 1445545 ENSG00000142319 SLC6A3 11049
|
195
195
|
5 174151536 174157896 ENSG00000120149 MSX2 7392
|
196
196
|
5 140011313 140013286 ENSG00000170458 CD14 1628
|
197
|
+
5 70220768 70249769 ENSG00000172062 SMN1 11117
|
198
|
+
5 69345350 69374349 ENSG00000205571 SMN2 11118
|
197
199
|
6 138188351 138204449 ENSG00000118503 TNFAIP3 11896
|
198
200
|
6 157099063 157531913 ENSG00000049618 ARID1B 18040
|
199
201
|
6 7727030 7881655 ENSG00000153162 BMP6 1073
|
@@ -194,6 +194,8 @@ Chromosome/scaffold name Gene start (bp) Gene end (bp) Gene stable ID HGNC symbo
|
|
194
194
|
5 140631728 140633701 ENSG00000170458 CD14 1628
|
195
195
|
5 95751319 95823005 ENSG00000173221 GLRX 4330
|
196
196
|
5 174724533 174730893 ENSG00000120149 MSX2 7392
|
197
|
+
5 70925030 70953942 ENSG00000172062 SMN1 11117
|
198
|
+
5 70049638 70078522 ENSG00000205571 SMN2 11118
|
197
199
|
6 139371807 139374620 ENSG00000164442 CITED2 1987
|
198
200
|
6 137867188 137883312 ENSG00000118503 TNFAIP3 11896
|
199
201
|
6 156777374 157210779 ENSG00000049618 ARID1B 18040
|
@@ -1996,6 +1996,33 @@ Chromosome/scaffold name Gene stable ID Transcript stable ID Transcript start (b
|
|
1996
1996
|
5 ENSG00000170458 ENST00000401743 140011313 140013286 NM_001174105
|
1997
1997
|
5 ENSG00000170458 ENST00000401743 140011313 140013286 NM_001040021
|
1998
1998
|
5 ENSG00000170458 ENST00000401743 140011313 140013286 NM_001174104
|
1999
|
+
5 ENSG00000205571 ENST00000380743 69345439 69373419 NM_017411
|
2000
|
+
5 ENSG00000205571 ENST00000511812 69345465 69372533
|
2001
|
+
5 ENSG00000205571 ENST00000506734 69345484 69373423
|
2002
|
+
5 ENSG00000205571 ENST00000380742 69345491 69373419 NM_022876
|
2003
|
+
5 ENSG00000205571 ENST00000503678 69359238 69366582
|
2004
|
+
5 ENSG00000205571 ENST00000511873 69362911 69366481
|
2005
|
+
5 ENSG00000205571 ENST00000509805 69362921 69366676
|
2006
|
+
5 ENSG00000205571 ENST00000505346 69362926 69372754
|
2007
|
+
5 ENSG00000205571 ENST00000514914 69363106 69373078
|
2008
|
+
5 ENSG00000205571 ENST00000508258 69365060 69366580
|
2009
|
+
5 ENSG00000205571 ENST00000507458 69366491 69374349
|
2010
|
+
5 ENSG00000205571 ENST00000380741 69345350 69373421 NM_022875 XM_005276775
|
2011
|
+
5 ENSG00000205571 ENST00000380741 69345350 69373421 NM_022875 XM_005248575
|
2012
|
+
5 ENSG00000205571 ENST00000380741 69345350 69373421 NM_022877 XM_005276775
|
2013
|
+
5 ENSG00000205571 ENST00000380741 69345350 69373421 NM_022877 XM_005248575
|
2014
|
+
5 ENSG00000172062 ENST00000503079 70220857 70248174
|
2015
|
+
5 ENSG00000172062 ENST00000380707 70220857 70248839 NM_000344
|
2016
|
+
5 ENSG00000172062 ENST00000514951 70220883 70248394 XM_005276777
|
2017
|
+
5 ENSG00000172062 ENST00000514951 70220883 70248394 XM_005248578
|
2018
|
+
5 ENSG00000172062 ENST00000514951 70220883 70248394 XM_005248577
|
2019
|
+
5 ENSG00000172062 ENST00000506239 70220902 70248843
|
2020
|
+
5 ENSG00000172062 ENST00000506163 70220922 70248867
|
2021
|
+
5 ENSG00000172062 ENST00000518504 70238299 70242105
|
2022
|
+
5 ENSG00000172062 ENST00000507905 70238335 70241906
|
2023
|
+
5 ENSG00000172062 ENST00000513228 70238345 70242101
|
2024
|
+
5 ENSG00000172062 ENST00000510679 70241916 70249769
|
2025
|
+
5 ENSG00000172062 ENST00000351205 70220768 70248841 NM_022874
|
1999
2026
|
6 ENSG00000118503 ENST00000421450 138188351 138192441
|
2000
2027
|
6 ENSG00000118503 ENST00000420009 138188459 138196172
|
2001
2028
|
6 ENSG00000118503 ENST00000237289 138188581 138204449 NM_001270507 XM_005267119
|
@@ -3013,6 +3013,42 @@ Chromosome/scaffold name Gene stable ID Transcript stable ID Transcript start (b
|
|
3013
3013
|
5 ENSG00000173221 ENST00000512469 95816410 95822711
|
3014
3014
|
5 ENSG00000120149 ENST00000239243 174724533 174730893 NM_002449
|
3015
3015
|
5 ENSG00000120149 ENST00000507785 174724602 174729880 XM_017009489
|
3016
|
+
5 ENSG00000172062 ENST00000503079 70925030 70952347 NM_022874 XM_047417616
|
3017
|
+
5 ENSG00000172062 ENST00000514951 70925056 70952567 XM_011543597
|
3018
|
+
5 ENSG00000172062 ENST00000506239 70925075 70953016
|
3019
|
+
5 ENSG00000172062 ENST00000380707 70925087 70953015 NM_000344 NM_000344.4
|
3020
|
+
5 ENSG00000172062 ENST00000506163 70925095 70953040 NM_001297715 XM_047417615
|
3021
|
+
5 ENSG00000172062 ENST00000506163 70925095 70953040 NM_001297715 XM_017009786
|
3022
|
+
5 ENSG00000172062 ENST00000506163 70925095 70953040 NM_001297715 XM_047417618
|
3023
|
+
5 ENSG00000172062 ENST00000625245 70925104 70946757 XM_011543596
|
3024
|
+
5 ENSG00000172062 ENST00000351205 70925104 70952006
|
3025
|
+
5 ENSG00000172062 ENST00000518504 70942472 70946278
|
3026
|
+
5 ENSG00000172062 ENST00000507905 70942508 70946079
|
3027
|
+
5 ENSG00000172062 ENST00000513228 70942518 70946274
|
3028
|
+
5 ENSG00000172062 ENST00000510679 70946089 70953942
|
3029
|
+
5 ENSG00000205571 ENST00000511812 70049638 70076706 XM_047417621
|
3030
|
+
5 ENSG00000205571 ENST00000511812 70049638 70076706 XM_047417622
|
3031
|
+
5 ENSG00000205571 ENST00000511812 70049638 70076706 XM_011543600
|
3032
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022877 XM_047417619
|
3033
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022877 XM_011543601
|
3034
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022877 XM_011543603
|
3035
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022875 XM_047417619
|
3036
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022875 XM_011543601
|
3037
|
+
5 ENSG00000205571 ENST00000626847 70049654 70077592 NM_022875 XM_011543603
|
3038
|
+
5 ENSG00000205571 ENST00000506734 70049657 70077596
|
3039
|
+
5 ENSG00000205571 ENST00000380742 70049664 70077592 NM_022876 XM_011543602
|
3040
|
+
5 ENSG00000205571 ENST00000380743 70049669 70077595 NM_017411 NM_017411.4
|
3041
|
+
5 ENSG00000205571 ENST00000628696 70049686 70071332 XM_011543599
|
3042
|
+
5 ENSG00000205571 ENST00000628696 70049686 70071332 XM_017009787
|
3043
|
+
5 ENSG00000205571 ENST00000380741 70049686 70076586
|
3044
|
+
5 ENSG00000205571 ENST00000614240 70049686 70076586 XM_047417620
|
3045
|
+
5 ENSG00000205571 ENST00000503678 70063411 70070755
|
3046
|
+
5 ENSG00000205571 ENST00000511873 70067084 70070654
|
3047
|
+
5 ENSG00000205571 ENST00000509805 70067094 70070849
|
3048
|
+
5 ENSG00000205571 ENST00000505346 70067099 70076927
|
3049
|
+
5 ENSG00000205571 ENST00000514914 70067279 70077251
|
3050
|
+
5 ENSG00000205571 ENST00000508258 70069233 70070753
|
3051
|
+
5 ENSG00000205571 ENST00000507458 70070664 70078522
|
3016
3052
|
6 ENSG00000164442 ENST00000367651 139371807 139374620 NM_006079
|
3017
3053
|
6 ENSG00000164442 ENST00000537332 139372255 139374213 NM_001168389
|
3018
3054
|
6 ENSG00000164442 ENST00000536159 139372255 139374362 NM_001168388
|
@@ -263,3 +263,5 @@ HGNC:12791 WRN Werner syndrome RecQ like helicase protein-coding gene gene with
|
|
263
263
|
HGNC:32550 ZBTB42 zinc finger and BTB domain containing 42 protein-coding gene gene with protein product Approved 14q32.33 14q32.33 ZNF925 "Zinc fingers C2H2-type|BTB domain containing" "28|861" 2006-03-15 2015-08-26 100128927 ENSG00000179627 OTTHUMG00000170790 uc021sem.3 AX721091 NM_001137601 CCDS45174 B2RXF5 MGI:3644133 RGD:1582758 ZBTB42 613915 471346 591
|
264
264
|
HGNC:12873 ZIC2 Zic family member 2 protein-coding gene gene with protein product Approved 13q32.3 13q32.3 HPE5 Zinc finger protein of the cerebellum 2 "Zic family member 2 (odd-paired Drosophila homolog)|Zic family member 2 (odd-paired homolog, Drosophila)" Zinc fingers C2H2-type 28 1998-04-27 2011-05-19 2018-04-21 7546 ENSG00000043355 OTTHUMG00000017279 uc001von.4 AF104902 NM_007129 CCDS9495 O95409 9771712 MGI:106679 RGD:1311174 LRG_1157|http://www.lrg-sequence.org/LRG/LRG_1157 ZIC2 603073 120610
|
265
265
|
HGNC:29277 ZNF687 zinc finger protein 687 protein-coding gene gene with protein product Approved 1q21.3 01q21.3 KIAA1441 2005-05-06 2016-10-05 57592 ENSG00000143373 OTTHUMG00000012347 uc001exq.4 NM_020832 CCDS992 Q8N1G0 10718198 MGI:1925516 RGD:2323182 ZNF687 610568 451453
|
266
|
+
HGNC:11117 SMN1 survival of motor neuron 1, telomeric protein-coding gene gene with protein product Approved 5q13.2 05q13.2 "BCD541|SMNT|SMA1|SMA2|SMA3|GEMIN1|TDRD16A" "gemin-1|tudor domain containing 16A" "SMA@|SMA" spinal muscular atrophy (Werdnig-Hoffmann disease, Kugelberg-Welander disease) "Tudor domain containing|SMN complex|Proteins encoded by multiple genes" "780|1500|2293" 1996-12-12 2023-01-20 6606 ENSG00000172062 OTTHUMG00000099361 uc003kak.4 U18423 NM_000344 Q16637 7813012 MGI:109257 RGD:620755 "SMN1 - Spinal Muscular Atrophy (SMA)|http://www.LOVD.nl/SMN1|Leiden Muscular Dystrophy pages|http://www.dmd.nl/nmdb2/home.php?select_db=SMN1|ALSOD, the Amyotrophic Lateral Sclerosis Online Genetic Database|http://alsod.iop.kcl.ac.uk/|LRG_676|http://ftp.ebi.ac.uk/pub/databases/lrgex/LRG_676.xml" 600354 133452 HGNC:11117 "ENST00000380707.9|NM_000344.4" HGNC:11117
|
267
|
+
HGNC:11118 SMN2 survival of motor neuron 2, centromeric protein-coding gene gene with protein product Approved 5q13.2 05q13.2 "BCD541|SMNC|GEMIN1|TDRD16B" tudor domain containing 16B "Tudor domain containing|SMN complex|Proteins encoded by multiple genes" "780|1500|2293" 1996-12-12 2023-01-20 6607 ENSG00000205571 OTTHUMG00000099389 uc003jyd.4 NM_017411 Q16637 7813012 MGI:109257 "ALSOD, the Amyotrophic Lateral Sclerosis Online Genetic Database|http://alsod.iop.kcl.ac.uk/|LRG_677|http://ftp.ebi.ac.uk/pub/databases/lrgex/LRG_677.xml" 601627 119750 HGNC:11118 "ENST00000380743.9|NM_017411.4"
|
scout/log/handlers.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
import logging
|
3
2
|
import logging.handlers
|
4
3
|
|
5
4
|
|
6
5
|
class TlsSMTPHandler(logging.handlers.SMTPHandler):
|
6
|
+
"""Used by the app to send emails."""
|
7
|
+
|
7
8
|
def emit(self, record):
|
8
9
|
"""Emit a record.
|
9
10
|
Format the record and send it to the specified addressees.
|
scout/log/log.py
CHANGED
@@ -1,62 +1,49 @@
|
|
1
1
|
import logging
|
2
|
-
|
3
|
-
import
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
""
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
def
|
43
|
-
"""
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
file_stream = None
|
52
|
-
log_stream = None
|
53
|
-
for handler in logger.handlers:
|
54
|
-
if isinstance(handler, logging.FileHandler):
|
55
|
-
file_stream = handler.stream
|
56
|
-
else:
|
57
|
-
log_stream = handler.stream
|
58
|
-
|
59
|
-
if file_stream:
|
60
|
-
return file_stream
|
61
|
-
|
62
|
-
return log_stream
|
2
|
+
|
3
|
+
import coloredlogs
|
4
|
+
from flask.app import Flask
|
5
|
+
|
6
|
+
USERS_LOGGER_PATH_PARAM = "USERS_ACTIVITY_LOG_PATH"
|
7
|
+
ACTIVITY_LOG_IGNORE_TRIGGERS = [
|
8
|
+
"static",
|
9
|
+
"ideograms",
|
10
|
+
"custom_images",
|
11
|
+
"autozygous_images",
|
12
|
+
"coverage_images",
|
13
|
+
"upd_regions_images",
|
14
|
+
"favicon",
|
15
|
+
"GET /",
|
16
|
+
"Closing",
|
17
|
+
"Enable",
|
18
|
+
"enabled",
|
19
|
+
"Collecting IGV tracks",
|
20
|
+
] # Substrings used when filtering messages to show if users activity log is on
|
21
|
+
|
22
|
+
|
23
|
+
class ActivityLogFilter(logging.Filter):
|
24
|
+
"""When monitoring users activity, log only navigation on main pages.
|
25
|
+
- Do not log messages that contain the substrings specified in ACTIVITY_LOG_IGNORE_TRIGGERS"""
|
26
|
+
|
27
|
+
def filter(self, record):
|
28
|
+
return (
|
29
|
+
any(sub_url in record.getMessage() for sub_url in ACTIVITY_LOG_IGNORE_TRIGGERS) is False
|
30
|
+
)
|
31
|
+
|
32
|
+
|
33
|
+
def set_activity_log(log: logging.Logger, app: Flask):
|
34
|
+
"""Log users' activity to a file, if specified in the scout config."""
|
35
|
+
app.logger.setLevel("INFO")
|
36
|
+
app.logger.addFilter(ActivityLogFilter())
|
37
|
+
file_handler = logging.FileHandler(app.config[USERS_LOGGER_PATH_PARAM])
|
38
|
+
file_handler.setFormatter(logging.Formatter("%(asctime)s - %(message)s"))
|
39
|
+
log.addHandler(file_handler)
|
40
|
+
|
41
|
+
|
42
|
+
def init_log(log: logging.Logger, app: Flask):
|
43
|
+
"""Initializes the log file in the proper format."""
|
44
|
+
|
45
|
+
current_log_level = log.getEffectiveLevel()
|
46
|
+
coloredlogs.install(level="DEBUG" if app.debug else current_log_level)
|
47
|
+
|
48
|
+
if USERS_LOGGER_PATH_PARAM in app.config:
|
49
|
+
set_activity_log(log=log, app=app)
|
@@ -58,6 +58,7 @@ CASE_FILE_PATH_CHECKS = [
|
|
58
58
|
"RNAfusion_inspector_research",
|
59
59
|
"RNAfusion_report",
|
60
60
|
"RNAfusion_report_research",
|
61
|
+
"rna_delivery_report",
|
61
62
|
]
|
62
63
|
|
63
64
|
VCF_FILE_PATH_CHECKS = FILE_TYPE_MAP.keys()
|
@@ -431,6 +432,7 @@ class CaseLoader(BaseModel):
|
|
431
432
|
RNAfusion_inspector_research: Optional[str] = None
|
432
433
|
RNAfusion_report: Optional[str] = None
|
433
434
|
RNAfusion_report_research: Optional[str] = None
|
435
|
+
rna_delivery_report: Optional[str] = None
|
434
436
|
smn_tsv: Optional[str] = None
|
435
437
|
sv_rank_model_version: Optional[str] = None
|
436
438
|
synopsis: Optional[Union[List[str], str]] = None
|
scout/parse/omim.py
CHANGED
@@ -49,7 +49,7 @@ def parse_genemap2_diseases(phenotype_entry, mim_number=None):
|
|
49
49
|
i = 0
|
50
50
|
splitted_info = phenotype_info.split(",")
|
51
51
|
for i, text in enumerate(splitted_info):
|
52
|
-
# Everything before ([1,2,3])
|
52
|
+
# Everything before ([1,2,3,4])
|
53
53
|
# We check if we are in the part where the mim number exists
|
54
54
|
match = ENTRY_PATTERN.search(text)
|
55
55
|
if not match:
|
@@ -75,7 +75,7 @@ def parse_genemap2_diseases(phenotype_entry, mim_number=None):
|
|
75
75
|
{
|
76
76
|
"mim_number": disease_mim,
|
77
77
|
"inheritance": inheritance,
|
78
|
-
"description": disease_description.strip("
|
78
|
+
"description": disease_description.strip(r"?{}"),
|
79
79
|
"status": disease_status,
|
80
80
|
}
|
81
81
|
)
|
scout/server/app.py
CHANGED
@@ -2,17 +2,19 @@
|
|
2
2
|
|
3
3
|
import logging
|
4
4
|
import os
|
5
|
+
import re
|
5
6
|
from datetime import timedelta
|
6
7
|
from typing import Dict, Union
|
7
8
|
from urllib.parse import parse_qsl, unquote, urlsplit
|
8
9
|
|
9
|
-
import coloredlogs
|
10
10
|
from flask import Flask, redirect, request, url_for
|
11
11
|
from flask_cors import CORS
|
12
12
|
from flask_login import current_user
|
13
13
|
from markdown import markdown as python_markdown
|
14
14
|
from markupsafe import Markup
|
15
15
|
|
16
|
+
from scout.log import init_log
|
17
|
+
|
16
18
|
from . import extensions
|
17
19
|
from .blueprints import (
|
18
20
|
alignviewers,
|
@@ -36,6 +38,8 @@ from .blueprints import (
|
|
36
38
|
|
37
39
|
LOG = logging.getLogger(__name__)
|
38
40
|
|
41
|
+
USERS_LOGGER_PATH_PARAM = "USERS_ACTIVITY_LOG_PATH"
|
42
|
+
|
39
43
|
|
40
44
|
def create_app(config_file=None, config=None):
|
41
45
|
"""Flask app factory function."""
|
@@ -60,8 +64,7 @@ def create_app(config_file=None, config=None):
|
|
60
64
|
|
61
65
|
app.json.sort_keys = False
|
62
66
|
|
63
|
-
|
64
|
-
coloredlogs.install(level="DEBUG" if app.debug else current_log_level)
|
67
|
+
init_log(log=LOG, app=app)
|
65
68
|
configure_extensions(app)
|
66
69
|
register_blueprints(app)
|
67
70
|
register_filters(app)
|
@@ -83,10 +86,15 @@ def create_app(config_file=None, config=None):
|
|
83
86
|
relevant_endpoint = not (static_endpoint or public_endpoint)
|
84
87
|
# if endpoint requires auth, check if user is authenticated
|
85
88
|
if relevant_endpoint and not current_user.is_authenticated:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
89
|
+
return redirect(url_for("public.index"))
|
90
|
+
|
91
|
+
@app.before_request
|
92
|
+
def log_users_activity():
|
93
|
+
"""Log users' navigation to file, if specified in the app setting.s"""
|
94
|
+
if USERS_LOGGER_PATH_PARAM not in app.config:
|
95
|
+
return
|
96
|
+
user = current_user.email if current_user.is_authenticated else "anonymous"
|
97
|
+
LOG.info(" - ".join([user, request.path]))
|
90
98
|
|
91
99
|
return app
|
92
100
|
|
@@ -246,6 +254,14 @@ def register_filters(app):
|
|
246
254
|
return "COSM" + str(cosmicId)
|
247
255
|
return cosmicId
|
248
256
|
|
257
|
+
@app.template_filter()
|
258
|
+
def upper_na(string):
|
259
|
+
"""
|
260
|
+
Uppercase ocurences of "dna" and "rna" for nice display.
|
261
|
+
"""
|
262
|
+
|
263
|
+
return re.sub(r"[Dd][Nn][Aa]", r"DNA", re.sub(r"[Rr][Nn][Aa]", r"RNA", string))
|
264
|
+
|
249
265
|
@app.template_filter()
|
250
266
|
def count_cursor(pymongo_cursor):
|
251
267
|
"""Count number of returned documents (deprecated pymongo.cursor.count())"""
|
@@ -125,7 +125,9 @@ def make_sashimi_tracks(
|
|
125
125
|
case_obj: dict, variant_id: Optional[str] = None, omics_variant_id: Optional[str] = None
|
126
126
|
):
|
127
127
|
"""Create a dictionary containing the required tracks for a splice junction plot
|
128
|
-
If
|
128
|
+
If a regular variant_id is passed, set display to a particular gene locus.
|
129
|
+
If an omics_variant_id is passed, set display to a window surrounding the variant, which can be a
|
130
|
+
gene or an affected region.
|
129
131
|
Otherwise defaults to whole genome "All" view.
|
130
132
|
|
131
133
|
Returns:
|
@@ -133,18 +135,16 @@ def make_sashimi_tracks(
|
|
133
135
|
"""
|
134
136
|
|
135
137
|
locus = "All"
|
136
|
-
variant_obj = None
|
137
|
-
|
138
|
-
if variant_id:
|
139
|
-
variant_obj = store.variant(document_id=variant_id)
|
140
|
-
if omics_variant_id:
|
141
|
-
variant_obj = store.omics_variant(variant_id=omics_variant_id)
|
142
138
|
|
143
139
|
build = "38"
|
144
140
|
if "37" in str(case_obj.get("rna_genome_build", "38")):
|
145
141
|
build = "37"
|
146
142
|
|
147
|
-
if
|
143
|
+
if variant_id:
|
144
|
+
variant_obj = store.variant(document_id=variant_id)
|
145
|
+
locus = make_locus_from_gene(variant_obj, case_obj, build)
|
146
|
+
if omics_variant_id:
|
147
|
+
variant_obj = store.omics_variant(variant_id=omics_variant_id)
|
148
148
|
locus = make_locus_from_variant(variant_obj, case_obj, build)
|
149
149
|
|
150
150
|
display_obj = {"locus": locus, "tracks": []}
|
@@ -195,17 +195,16 @@ def make_merged_splice_track(ind: dict) -> dict:
|
|
195
195
|
return track
|
196
196
|
|
197
197
|
|
198
|
-
def
|
199
|
-
"""
|
200
|
-
|
201
|
-
Initialize locus coordinates with variant coordinates so it won't crash if variant gene(s) no longer exist in database.
|
198
|
+
def get_locus_from_variant(variant_obj: Dict, case_obj: Dict, build: str) -> tuple:
|
199
|
+
"""
|
202
200
|
Check if variant coordinates are in genome build 38, otherwise do variant coords liftover.
|
203
201
|
Use original coordinates only if genome build was already 38 or liftover didn't work.
|
204
|
-
Collect locus coordinates.
|
205
|
-
The returned locus will so span all genes the variant falls into.
|
202
|
+
Collect locus coordinates.
|
206
203
|
"""
|
207
|
-
|
208
|
-
|
204
|
+
MIN_LOCUS_SIZE_OFFSET = 100
|
205
|
+
|
206
|
+
locus_start_coord = variant_obj.get("position")
|
207
|
+
locus_end_coord = variant_obj.get("end")
|
209
208
|
|
210
209
|
if build not in str(case_obj.get("genome_build")):
|
211
210
|
client = EnsemblRestApiClient()
|
@@ -218,13 +217,37 @@ def make_locus_from_variant(variant_obj: Dict, case_obj: Dict, build: str) -> st
|
|
218
217
|
if mapped_coords:
|
219
218
|
mapped_start = mapped_coords[0]["mapped"].get("start")
|
220
219
|
mapped_end = mapped_coords[0]["mapped"].get("end") or mapped_start
|
221
|
-
|
222
|
-
|
220
|
+
locus_start_coord = mapped_start
|
221
|
+
locus_end_coord = mapped_end
|
222
|
+
|
223
|
+
variant_size_offset = (variant_obj.get("end") - variant_obj.get("position")) / 10
|
224
|
+
if variant_size_offset < (MIN_LOCUS_SIZE_OFFSET * 2):
|
225
|
+
variant_size_offset = MIN_LOCUS_SIZE_OFFSET
|
226
|
+
locus_start_coord -= variant_size_offset
|
227
|
+
locus_end_coord += variant_size_offset
|
228
|
+
|
229
|
+
return (variant_obj["chromosome"], locus_start_coord, locus_end_coord)
|
230
|
+
|
231
|
+
|
232
|
+
def make_locus_from_variant(variant_obj: Dict, case_obj: Dict, build: str) -> str:
|
233
|
+
"""Given a variant obj, construct a locus string across variant plus a percent size offset around the variant."""
|
234
|
+
|
235
|
+
(chrom, locus_start, locus_end) = get_locus_from_variant(variant_obj, case_obj, build)
|
236
|
+
return f"{chrom}:{locus_start}-{locus_end}"
|
237
|
+
|
238
|
+
|
239
|
+
def make_locus_from_gene(variant_obj: Dict, case_obj: Dict, build: str) -> str:
|
240
|
+
"""Given a variant obj, construct a locus string across any gene touched for IGV to display.
|
241
|
+
Initialize locus coordinates with variant coordinates so it won't crash if variant gene(s) no longer exist in database.
|
242
|
+
Check if variant coordinates are in genome build 38, otherwise do variant coords liftover.
|
243
|
+
Use original coordinates only if genome build was already 38 or liftover didn't work.
|
244
|
+
Collect locus coordinates. Take into account that variant can hit multiple genes.
|
245
|
+
The returned locus will so span all genes the variant falls into.
|
246
|
+
"""
|
223
247
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
locus_end_coords.append(variant_obj.get("end"))
|
248
|
+
(chrom, locus_start, locus_end) = get_locus_from_variant(variant_obj, case_obj, build)
|
249
|
+
locus_start_coords = [locus_start]
|
250
|
+
locus_end_coords = [locus_end]
|
228
251
|
|
229
252
|
variant_genes_ids = [gene["hgnc_id"] for gene in variant_obj.get("genes", [])]
|
230
253
|
for gene_id in variant_genes_ids:
|
@@ -237,7 +260,7 @@ def make_locus_from_variant(variant_obj: Dict, case_obj: Dict, build: str) -> st
|
|
237
260
|
locus_start = min(locus_start_coords)
|
238
261
|
locus_end = max(locus_end_coords)
|
239
262
|
|
240
|
-
return f"{
|
263
|
+
return f"{chrom}:{locus_start}-{locus_end}"
|
241
264
|
|
242
265
|
|
243
266
|
def set_tracks(name, file_list):
|