pyobo 0.11.0__py3-none-any.whl → 0.11.2__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.
- pyobo/constants.py +1 -0
- pyobo/gilda_utils.py +14 -11
- pyobo/obographs.py +5 -2
- pyobo/resources/so.py +55 -0
- pyobo/resources/so.tsv +2604 -0
- pyobo/sources/complexportal.py +54 -15
- pyobo/sources/dictybase_gene.py +14 -9
- pyobo/sources/drugcentral.py +4 -1
- pyobo/sources/expasy.py +22 -4
- pyobo/sources/flybase.py +3 -2
- pyobo/sources/hgnc.py +24 -19
- pyobo/sources/hgncgenefamily.py +7 -7
- pyobo/sources/kegg/genome.py +18 -6
- pyobo/sources/mirbase.py +9 -3
- pyobo/sources/npass.py +1 -1
- pyobo/sources/pathbank.py +32 -23
- pyobo/sources/pombase.py +6 -3
- pyobo/sources/reactome.py +28 -7
- pyobo/sources/rgd.py +1 -1
- pyobo/sources/slm.py +28 -14
- pyobo/sources/uniprot/uniprot.py +7 -6
- pyobo/sources/zfin.py +18 -6
- pyobo/struct/reference.py +9 -8
- pyobo/struct/struct.py +30 -20
- pyobo/struct/typedef.py +5 -0
- pyobo/version.py +1 -1
- {pyobo-0.11.0.dist-info → pyobo-0.11.2.dist-info}/METADATA +50 -62
- {pyobo-0.11.0.dist-info → pyobo-0.11.2.dist-info}/RECORD +31 -45
- {pyobo-0.11.0.dist-info → pyobo-0.11.2.dist-info}/WHEEL +1 -1
- pyobo/apps/__init__.py +0 -3
- pyobo/apps/cli.py +0 -24
- pyobo/apps/gilda/__init__.py +0 -3
- pyobo/apps/gilda/__main__.py +0 -8
- pyobo/apps/gilda/app.py +0 -48
- pyobo/apps/gilda/cli.py +0 -36
- pyobo/apps/gilda/templates/base.html +0 -33
- pyobo/apps/gilda/templates/home.html +0 -11
- pyobo/apps/gilda/templates/matches.html +0 -32
- pyobo/apps/mapper/__init__.py +0 -3
- pyobo/apps/mapper/__main__.py +0 -11
- pyobo/apps/mapper/cli.py +0 -37
- pyobo/apps/mapper/mapper.py +0 -187
- pyobo/apps/mapper/templates/base.html +0 -35
- pyobo/apps/mapper/templates/mapper_home.html +0 -64
- pyobo-0.11.0.dist-info/LICENSE +0 -21
- {pyobo-0.11.0.dist-info → pyobo-0.11.2.dist-info}/entry_points.txt +0 -0
- {pyobo-0.11.0.dist-info → pyobo-0.11.2.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
pyobo/__init__.py,sha256=k-oIvi7tNzCg0SA8D7jghJ9Q9GW6RXp75kszqsbZ_Xk,1837
|
|
2
2
|
pyobo/__main__.py,sha256=cOYQ2OELxF-9T6nuZ9xnLSu9bLHk6einrsSoz7EcD9M,83
|
|
3
3
|
pyobo/aws.py,sha256=8vg7VumLT3blTX8dyluS13jrBo6bwRHNEpkQw1njhXo,5946
|
|
4
|
-
pyobo/constants.py,sha256=
|
|
4
|
+
pyobo/constants.py,sha256=R6ZIJ9JylzEXaGAO70WcMwwwNXezKoTJDEWLskzcYZc,1936
|
|
5
5
|
pyobo/getters.py,sha256=mOrlI8qrI3zHwloXNvpmQnSSxhZZLjBgg5ZUGUwqUK8,15557
|
|
6
|
-
pyobo/gilda_utils.py,sha256=
|
|
6
|
+
pyobo/gilda_utils.py,sha256=QXSzJmas1-BzT6S1O6XWnzKVjFzO_-vYoPZGi_HoUpw,8246
|
|
7
7
|
pyobo/identifier_utils.py,sha256=UoDXiOeqlqMVXISR4Qhw1zXD0ss7jsw-fPs5Jsx8xyY,4533
|
|
8
8
|
pyobo/mocks.py,sha256=Tivg8tLNFjUsbAF8TiY3iurhBbgmzGtYJmNMg_e6TTo,2422
|
|
9
9
|
pyobo/normalizer.py,sha256=DfDuX2Ed3vCJgaezfHXorYcNui9vfR64AFJFYfF_NWk,8304
|
|
10
|
-
pyobo/obographs.py,sha256=
|
|
10
|
+
pyobo/obographs.py,sha256=3Bdot7c5KlrTPxmgnk3Y7tXmaVf0n9aL8QEs6pIGVHo,3912
|
|
11
11
|
pyobo/plugins.py,sha256=UyEnXxFP2q9IdYp5o7DDXPBrcExvTx4LkvhvWXx-XQc,1227
|
|
12
12
|
pyobo/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
pyobo/reader.py,sha256=C_-Dz0ScyFdr8DivHTYyDhIVg8SOwS_Y0DIuqKT2EJI,21292
|
|
14
14
|
pyobo/resource_utils.py,sha256=8ZQx8d-HbmPyc_WHUhqx1yjUKFZMF101FopZwZPghoE,4273
|
|
15
|
-
pyobo/version.py,sha256=
|
|
15
|
+
pyobo/version.py,sha256=5XT91psNM717pWEmUHFJc4A_TdbD4AvRx-gAxK9qm4Y,919
|
|
16
16
|
pyobo/api/__init__.py,sha256=7_uVqbZVEWrKNBYxVJb86K9-dLsGD2d2H5wjLzIP1wU,1301
|
|
17
17
|
pyobo/api/alts.py,sha256=fYA3S3odeem2-HvzeqUn0jkAFGdmbL1SYXCjIqKmRqs,2836
|
|
18
18
|
pyobo/api/hierarchy.py,sha256=-zgM4n0n0h5v5aPOhG0AR3isOt10Vtpo6EwVYN00ngI,9509
|
|
@@ -24,21 +24,6 @@ pyobo/api/species.py,sha256=Ze1yr3n9jCVQVYXmn_hw_FiziTYchddCNTW9ChDH85U,2259
|
|
|
24
24
|
pyobo/api/typedefs.py,sha256=Z4IZ5ggJe1N7lKMMrng5P8WnZo0nalsaLTMLmQT0w2Y,1130
|
|
25
25
|
pyobo/api/utils.py,sha256=zM56HjlYNPXjnhIe3oS7Yv5mAEfHHbhnf1gpJOnem1M,3274
|
|
26
26
|
pyobo/api/xrefs.py,sha256=InnBazYid5SBoRCMfE3lrBIRtdvwNi2oozjlGaX06ls,6007
|
|
27
|
-
pyobo/apps/__init__.py,sha256=iACi86TkTiGxwneGmfaudZOIEqZ45YjPXng7XjPE38Y,72
|
|
28
|
-
pyobo/apps/cli.py,sha256=gnXBAaESw1T1BvgMpTv-0P26hM2vKCAXPy0SOskgUwU,335
|
|
29
|
-
pyobo/apps/gilda/__init__.py,sha256=jpLIHJOmR_66tdXXUWFP9NiZnpQKvjv5YpCJWoAKnUI,54
|
|
30
|
-
pyobo/apps/gilda/__main__.py,sha256=9EEwzUlwcFHrfAEzveIvmqHiPu52wLt8o4Xe_vFcWf0,124
|
|
31
|
-
pyobo/apps/gilda/app.py,sha256=rHqGR52fnbhqRPWktbIZc8ZZcFEIKp6rq7ledFuN_Lg,1315
|
|
32
|
-
pyobo/apps/gilda/cli.py,sha256=OteTZy060Elmg38sl091kHfaHjjLTJaAtLdUpWgr6ug,702
|
|
33
|
-
pyobo/apps/gilda/templates/base.html,sha256=MxFNPgWW4wYzXXS3RwXMcMJAc1_lUhguQvVYQYjSjLY,888
|
|
34
|
-
pyobo/apps/gilda/templates/home.html,sha256=ZAqegzBGgVct9UzmfC0dfGJ6_jbDSCpbwqe2WB-00AA,273
|
|
35
|
-
pyobo/apps/gilda/templates/matches.html,sha256=x3mvMCevr8IoXSXmm_aOQlKNBycvMpBedLLCt2znNXQ,934
|
|
36
|
-
pyobo/apps/mapper/__init__.py,sha256=9PK1LtsCTVcQQzSPtpa6f1dgjsoeygq9cAP7AXqEiJY,56
|
|
37
|
-
pyobo/apps/mapper/__main__.py,sha256=XScQCj6oK2OslWyZ8yzcaietLJm_XxDLA22CMoyy6dM,169
|
|
38
|
-
pyobo/apps/mapper/cli.py,sha256=AHPPXqSd3LTMhHIsmhErMB_gpfDeDs6IGlPdHQKMIq0,682
|
|
39
|
-
pyobo/apps/mapper/mapper.py,sha256=yVIHGlTwFNtKEF07K-oqsqy8ggIalN6SfmyzB4E--2I,5787
|
|
40
|
-
pyobo/apps/mapper/templates/base.html,sha256=w9d8e8qKnVy_h7RT5hWV9EwghgPqn0y3xJ-tZw0v9TQ,982
|
|
41
|
-
pyobo/apps/mapper/templates/mapper_home.html,sha256=XugUb76C6B1JGQTCb2tDhZ-XyY-636qeZJODUTrpjdw,2785
|
|
42
27
|
pyobo/cli/__init__.py,sha256=pTiLuzjjpi0P69yVjQ2kE6nBUmZuYFnqdJNDZLDkgvk,71
|
|
43
28
|
pyobo/cli/aws.py,sha256=_S08OhNY-vdx-KIT4ix3Zluey9lVY0RWJhDjwcwrw2M,964
|
|
44
29
|
pyobo/cli/cli.py,sha256=gWEMOWEfjpTdCjxJm1F3Kq73FD1xoGfG9p_8r0YJ4Ro,3522
|
|
@@ -53,6 +38,8 @@ pyobo/resources/ncbitaxon.py,sha256=rZtU6ik32UATBb5tRY5i5LU9_kpTA3vmPy9gOfhY_fU,
|
|
|
53
38
|
pyobo/resources/ncbitaxon.tsv.gz,sha256=43zHjnVt62TA4_lV58X-FCPdMDfLg1B1PvZSr_Xy9hY,22981954
|
|
54
39
|
pyobo/resources/ro.py,sha256=k8JoFKz64T1Pp39FKud1n4I3qPb178B2xSWJbAN8qdU,1461
|
|
55
40
|
pyobo/resources/ro.tsv,sha256=YvlBLPAKy2w4IheYzO9ox1Yg6WkHdMVzMQTikIlECog,26586
|
|
41
|
+
pyobo/resources/so.py,sha256=S-vmQ7L8AJE08FfGVDIJqNQNaLPUmuJ6HC5F4hWHMrA,1466
|
|
42
|
+
pyobo/resources/so.tsv,sha256=UJZKFTEAv_XszYYbun4Wf6b4jovDjSKc1RWRQRcTzDw,82068
|
|
56
43
|
pyobo/sources/README.md,sha256=w2klc3MjUbLL9VZxIZIqFrHMdQshPUGSCoFsYdUReD8,889
|
|
57
44
|
pyobo/sources/__init__.py,sha256=WkyBXj7V1Y90qSijmHwF89GyC8kRj-Jv7DiFAzqX1iA,3811
|
|
58
45
|
pyobo/sources/agrovoc.py,sha256=SJsbJ7KtxdJUG9Rimmb2CfLfzpK9eOzP0wx59gj-6s4,787
|
|
@@ -63,26 +50,26 @@ pyobo/sources/cgnc.py,sha256=MSEGwaZ8wOypR5sLALAl5Z3ay7K3RjqMC0GtJd4VvSc,2320
|
|
|
63
50
|
pyobo/sources/chebi.py,sha256=IrfXfO9-75jxeDCjCBFBgRWe2R7DSQpQBOllgt7MmoI,1202
|
|
64
51
|
pyobo/sources/chembl.py,sha256=5K5gtIrsqHyZSG8uxhqgXuvKjSXAw9i1dg20boZg8Fg,2280
|
|
65
52
|
pyobo/sources/civic_gene.py,sha256=_gC7P8QyRhJF9i_46eEU4_nV8I7i6z7XGKvXD67mwOM,1693
|
|
66
|
-
pyobo/sources/complexportal.py,sha256=
|
|
53
|
+
pyobo/sources/complexportal.py,sha256=n_ZHWzg7jRA0Trmy1ndQZAFM-ayDl_hFnj6O0ZjZESA,7581
|
|
67
54
|
pyobo/sources/conso.py,sha256=OVcfSUjwMh5biMZuTfidHvREjyPrQE84kmEQOHsinxE,2438
|
|
68
55
|
pyobo/sources/cpt.py,sha256=b7hcULlvu_xa6URwoD37Gc_8VAs8mxawAlXflL1e1LU,1466
|
|
69
56
|
pyobo/sources/credit.py,sha256=gOhD5Q2Xa4CgEnDiwli8CuxjAxLkydZukwFU-l_KTzc,2017
|
|
70
57
|
pyobo/sources/cvx.py,sha256=WglHdUi6uLKFUkzDRxGTuElOxBu4x5By2XcfZNS4LlM,2820
|
|
71
58
|
pyobo/sources/depmap.py,sha256=UKJ63iH7NtzklQ7AIqENMxQIvslNeBocwLW90cR8Tcc,3660
|
|
72
|
-
pyobo/sources/dictybase_gene.py,sha256=
|
|
59
|
+
pyobo/sources/dictybase_gene.py,sha256=57RxdH70S3Rklz4qZS0T_kBEdCH2UVSXYdYwt7Gn2Ds,2810
|
|
73
60
|
pyobo/sources/drugbank.py,sha256=W-Qa8Cttk07PtndbdJHc1yrAMYZHT-4r1bxeRrXgqHE,11032
|
|
74
61
|
pyobo/sources/drugbank_salt.py,sha256=DXqz5rEw8QUipPkDeuwg-MU9OvnSrBM62k3JeSeq4kM,1768
|
|
75
|
-
pyobo/sources/drugcentral.py,sha256=
|
|
76
|
-
pyobo/sources/expasy.py,sha256=
|
|
62
|
+
pyobo/sources/drugcentral.py,sha256=YXd6d2y62ILNrWg5rqi9jDfmB-MTacCZA26itDgETmY,3751
|
|
63
|
+
pyobo/sources/expasy.py,sha256=2MUKkPIiww97e14sTMH-FQa7tSxFym7Gz49D08wmZYI,10771
|
|
77
64
|
pyobo/sources/famplex.py,sha256=oyNbnAbRuc72nap_xWpiZR8mcWWj7O5GliL89kwF9mQ,5787
|
|
78
|
-
pyobo/sources/flybase.py,sha256=
|
|
65
|
+
pyobo/sources/flybase.py,sha256=8-_8AfS-_rho4OThchHjqDG0y07owq02rlmQjGmuBkY,5817
|
|
79
66
|
pyobo/sources/geonames.py,sha256=uNwrVBXGaPvMS7bwUAof_plSrV3F999Va2YSWbNwAKA,8563
|
|
80
67
|
pyobo/sources/gmt_utils.py,sha256=aPPVAtoyPOzoyGFOAf3RwlgpdARAU0RHkDWnp_ZFgl4,1391
|
|
81
68
|
pyobo/sources/go.py,sha256=SDRZtT28gY6T3k3z_3PMSDdsQkb4vJDAchw1dL6x40Q,1250
|
|
82
69
|
pyobo/sources/gwascentral_phenotype.py,sha256=EDxcAC6ONhZj-Amo4PsT7ruO1-CzqsJvYXug4eeFX5A,1873
|
|
83
70
|
pyobo/sources/gwascentral_study.py,sha256=njSRd9YxMWvXXg4cyILPL704LrtIeg-_63cR120jgyc,2814
|
|
84
|
-
pyobo/sources/hgnc.py,sha256=
|
|
85
|
-
pyobo/sources/hgncgenefamily.py,sha256=
|
|
71
|
+
pyobo/sources/hgnc.py,sha256=C6Av1SIgP4XNyxcKKjZfEEvrPRu8lKUD-rNMYAmSC7Y,16298
|
|
72
|
+
pyobo/sources/hgncgenefamily.py,sha256=jecrhlcBSXMnoFKlKHyS8zkWfqSqr5UHXZT7h_cY4oU,3755
|
|
86
73
|
pyobo/sources/icd10.py,sha256=FqCrB3f1OGukQDcvgLGffbSNyaA9D62ufTQkgMLeE4I,2283
|
|
87
74
|
pyobo/sources/icd11.py,sha256=IaJ6fV_7humYu7AKvn_93y355FL_XMjtMyyMClYBUjI,2831
|
|
88
75
|
pyobo/sources/icd_utils.py,sha256=Ub5LH4fDRHrGWwb7iP8I2KEFNl6I-viqxvLUyxGz2nM,3156
|
|
@@ -90,33 +77,33 @@ pyobo/sources/interpro.py,sha256=8IhVie_VrQSHFZmxpQVPQXm6ISFV435UjhDA41qBuk8,488
|
|
|
90
77
|
pyobo/sources/itis.py,sha256=jJF5oGuaewl4SH882AMhzr7HX5Ekpp2fyqAwT3nY6G4,2951
|
|
91
78
|
pyobo/sources/mesh.py,sha256=02VCo6t4g3kp0BhLb_2pykK1428xyfY40zQ3xCPK_eY,12116
|
|
92
79
|
pyobo/sources/mgi.py,sha256=nIizvAtIG7genT1iETkdKZmS6mCQmQZCSR-_kRMg7_s,5750
|
|
93
|
-
pyobo/sources/mirbase.py,sha256=
|
|
80
|
+
pyobo/sources/mirbase.py,sha256=SfXyLt0_EVp_9mTApKC13-9cFTGs2qfi8J7KekKv5d4,6511
|
|
94
81
|
pyobo/sources/mirbase_constants.py,sha256=5DjcwX_FRSzFYbTf50yvkPamSIH70Rw3I8q-Ds0zHVs,1998
|
|
95
82
|
pyobo/sources/mirbase_family.py,sha256=qWAp1PUN5pJCArTPx-rhMGi6UG0LfoZNg5URQdXhDps,2151
|
|
96
83
|
pyobo/sources/mirbase_mature.py,sha256=UbAdGEzLiS3GjeCnGKjapUKrL1WxTgxF25hdwx7pmV4,1488
|
|
97
84
|
pyobo/sources/msigdb.py,sha256=lzQ9Bfuv53UVaN3He1NCkGg4ChWfo_9OPOK8NW6bl_s,5010
|
|
98
85
|
pyobo/sources/ncbigene.py,sha256=jeQRJnLnU4Q1_U-FKOOeQjkqlc-iamUUn0zZqEmiaiI,5028
|
|
99
|
-
pyobo/sources/npass.py,sha256=
|
|
86
|
+
pyobo/sources/npass.py,sha256=0jHHGX0gk2PZFhv5jhEsbN-khTaJu0cE3sbMedZe3UU,2799
|
|
100
87
|
pyobo/sources/omim_ps.py,sha256=fcMNrFBtc5u3HHaLpQVML4amHvgMErTS--pOlg074A4,1004
|
|
101
|
-
pyobo/sources/pathbank.py,sha256=
|
|
88
|
+
pyobo/sources/pathbank.py,sha256=5sM_8dgriKE5YawxeGq3A6bpdC1kFS0KZXeaF-k-IYA,5471
|
|
102
89
|
pyobo/sources/pfam.py,sha256=T9rZNIXUTw8XajUSNoPscDUN9wG4bae171xQepYqhQI,1830
|
|
103
90
|
pyobo/sources/pfam_clan.py,sha256=Qk4q8jEwFR9NcLXeGR3p9TjA2oK40KkkFS0wMA1UirA,1324
|
|
104
91
|
pyobo/sources/pid.py,sha256=iVoZ3yUgfTccun2baEDQ-mTwLYJ8kdWMoT9H3Q6xREc,4541
|
|
105
|
-
pyobo/sources/pombase.py,sha256=
|
|
92
|
+
pyobo/sources/pombase.py,sha256=hpkhIWgHk9viHF8aZnUJUqLEOK1I6M58v4zXGMKGQAw,3712
|
|
106
93
|
pyobo/sources/pubchem.py,sha256=SgC56EBUHT6Cgwm7BUc3Kgw8b-kdg80JHm8D-TKdEzg,5284
|
|
107
|
-
pyobo/sources/reactome.py,sha256=
|
|
108
|
-
pyobo/sources/rgd.py,sha256=
|
|
94
|
+
pyobo/sources/reactome.py,sha256=yp0JZkdZvtSlwl9ki2L4ziEfaPo3YDolPeXTbQkmrnA,5720
|
|
95
|
+
pyobo/sources/rgd.py,sha256=yYTZvYZi4irm2daE6GRf9NNtQXjwA9DYXupov2K9PXY,5394
|
|
109
96
|
pyobo/sources/rhea.py,sha256=qlQj6wHuY08QeEGwVHubh8oLD-E12dbqNCJ57v_uKW4,7776
|
|
110
97
|
pyobo/sources/ror.py,sha256=U6sQ1IBs0nxENF02bnkUVA8rx04o4Y9dZ2YwKu6rtj4,7377
|
|
111
98
|
pyobo/sources/sgd.py,sha256=kQ_kof0F50RB0TrL2Eorqc7nUyv2kibAdf4Hp99ijKo,2134
|
|
112
|
-
pyobo/sources/slm.py,sha256=
|
|
99
|
+
pyobo/sources/slm.py,sha256=KaU2fwiSaURlnCOBeOsXEgt-Thqi8AOxq7YZg_rsJcQ,4261
|
|
113
100
|
pyobo/sources/utils.py,sha256=RLo6z5BKLdofu4bLstDOJMOEiMDEmJdYrE12PeJEKtc,1091
|
|
114
101
|
pyobo/sources/wikipathways.py,sha256=cd_0uRjwi5Q5SpBHTUF2QqLxj67-ZhuqdxEIGHcoB0U,2710
|
|
115
|
-
pyobo/sources/zfin.py,sha256=
|
|
102
|
+
pyobo/sources/zfin.py,sha256=6Mh-JhTKXy3g9xed-AgzmZlhIoWnBoEUJK9bsjQUahA,5369
|
|
116
103
|
pyobo/sources/kegg/__init__.py,sha256=hVP0tuwVpiNMikFv_bNPrzuYv-HA1_bPdCvNx-fm5Fg,219
|
|
117
104
|
pyobo/sources/kegg/api.py,sha256=nwHuKPsYbWhHEgBZzJ92XQAibQp8XEVQ6xglzWxyWY4,4709
|
|
118
105
|
pyobo/sources/kegg/genes.py,sha256=T9ct-E_q43MZT4v7I2-liokxhNiRCI-HMZwKgBPwxz4,3707
|
|
119
|
-
pyobo/sources/kegg/genome.py,sha256=
|
|
106
|
+
pyobo/sources/kegg/genome.py,sha256=9KSpBffM1Wv2pwTG8g0Lve9Zhu1Eur-Alvnjnry2N5o,4321
|
|
120
107
|
pyobo/sources/kegg/pathway.py,sha256=ZvKBXLieL1w5kwaHg5wxvtFAAYAnWF1TalhGo_G6puc,6176
|
|
121
108
|
pyobo/sources/selventa/__init__.py,sha256=cIIDlWL9znL2r0aZIJ2r1FN3NM9io74w-He2egzJwX8,254
|
|
122
109
|
pyobo/sources/selventa/schem.py,sha256=Ct6Ut3AB99eylGhZco57ueoRcsyUmHATpFPRR8cbG8g,1313
|
|
@@ -129,7 +116,7 @@ pyobo/sources/umls/get_synonym_types.py,sha256=KU3CQxQBV2xYcX3SjqMrfRNU9nESYGDA7
|
|
|
129
116
|
pyobo/sources/umls/synonym_types.tsv,sha256=z--ngeAqA_Kk8ft2YD8qOU_XUxhnTxF0OhL8jRd5xqo,8551
|
|
130
117
|
pyobo/sources/umls/umls.py,sha256=WM2vNSX1asHn8hcVjV8sdkxE3Id3xOXwiRdLqb7Jnxk,4297
|
|
131
118
|
pyobo/sources/uniprot/__init__.py,sha256=HVrjUxKjixqagsOYvVJkZ7nyIPlWAhLaUWa8sR0gLqA,200
|
|
132
|
-
pyobo/sources/uniprot/uniprot.py,sha256=
|
|
119
|
+
pyobo/sources/uniprot/uniprot.py,sha256=Qi329uy0PWRglmZGoEtSlzXy0Gs7nFVPIFroJA0H0VM,6206
|
|
133
120
|
pyobo/sources/uniprot/uniprot_ptm.py,sha256=8hbGP_5Rh-HhB6iBIJZ7qhXBdcCKD9sUKtwYKUhczHU,3552
|
|
134
121
|
pyobo/ssg/__init__.py,sha256=j_5ZWISXGMNLjJRiT-OBhdJ7MQpRQF69fMLWMaDidVQ,5410
|
|
135
122
|
pyobo/ssg/base.html,sha256=_vldUCa-gL2YTNY6GgAuxNT3TgaED585vF_q7TrrjYs,2844
|
|
@@ -137,9 +124,9 @@ pyobo/ssg/index.html,sha256=zDGkwIQBtbpnhCYALXQ0vr7qsVmAqDtbwOyPqU3hZ8s,3993
|
|
|
137
124
|
pyobo/ssg/term.html,sha256=QU6piGOq4dq8zlNhJvLFxqFjhVQyWlkiG31I0Sg5frg,3559
|
|
138
125
|
pyobo/ssg/typedef.html,sha256=KrdqzB6xjt689bG33D26AL-11JrvNuEkoxNNI-EG-Tg,2038
|
|
139
126
|
pyobo/struct/__init__.py,sha256=DwGtSEPepZdgB49UvxG470g12XIFdhMdKZ44DoZMg6g,646
|
|
140
|
-
pyobo/struct/reference.py,sha256
|
|
141
|
-
pyobo/struct/struct.py,sha256=
|
|
142
|
-
pyobo/struct/typedef.py,sha256=
|
|
127
|
+
pyobo/struct/reference.py,sha256=-SJaXMSDOrQ7SyU12UYquwwUdqoFoxrb6WypVtbGxOs,5661
|
|
128
|
+
pyobo/struct/struct.py,sha256=5GJl4hEY2L5C3iM_vexdsPxiJANwNh_1KakjDMorXDs,55019
|
|
129
|
+
pyobo/struct/typedef.py,sha256=MA62XSS-Me4kSmVs25fQbW1nGss1C8zhAQ5diidCSzs,14009
|
|
143
130
|
pyobo/struct/utils.py,sha256=ETsjZDtlGI3iEMHlYkgHcSNGeo3agwlLK3QL74gqTc8,790
|
|
144
131
|
pyobo/utils/__init__.py,sha256=CANSY8vGq_6v8rWhWRIdnk-Wo5LA2R9Wjg1nqbWqLOw,17
|
|
145
132
|
pyobo/utils/cache.py,sha256=fED68uExWkruXsrqYWe4iAZNZEN4MapEPYmrTBgA7U0,2996
|
|
@@ -163,9 +150,8 @@ pyobo/xrefdb/sources/intact.py,sha256=l2gqxm9OLPpQqhNqAIT_jk7AHx61itsUCz-5dowwMb
|
|
|
163
150
|
pyobo/xrefdb/sources/ncit.py,sha256=QTo9BSGuurvy9M54viS6_v6dF36O8DbUGU6iiyqKsPI,3729
|
|
164
151
|
pyobo/xrefdb/sources/pubchem.py,sha256=VK_yPCaoa-CKQNkq9iAF0Zh0D_zxqa92YG4OBbvnA9c,771
|
|
165
152
|
pyobo/xrefdb/sources/wikidata.py,sha256=JSrl3YWMQA_gxw7IXJRnxWWetcAV82aM5-5J3IHFzoQ,3562
|
|
166
|
-
pyobo-0.11.
|
|
167
|
-
pyobo-0.11.
|
|
168
|
-
pyobo-0.11.
|
|
169
|
-
pyobo-0.11.
|
|
170
|
-
pyobo-0.11.
|
|
171
|
-
pyobo-0.11.0.dist-info/RECORD,,
|
|
153
|
+
pyobo-0.11.2.dist-info/METADATA,sha256=OhM135rj_cy5fzwcUBqk0Hfm4ItzYdR7DjKVt5pX8Hg,24916
|
|
154
|
+
pyobo-0.11.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
155
|
+
pyobo-0.11.2.dist-info/entry_points.txt,sha256=YfZYzQyXBZ5dGiy4GsOUCOKKlNRNDcmR4vnlpD50q08,41
|
|
156
|
+
pyobo-0.11.2.dist-info/top_level.txt,sha256=oVdkT-pbiGoSdGSQplXFuP1KQGJNf4GdRC65jn6y9t0,6
|
|
157
|
+
pyobo-0.11.2.dist-info/RECORD,,
|
pyobo/apps/__init__.py
DELETED
pyobo/apps/cli.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""CLI for PyOBO apps."""
|
|
4
|
-
|
|
5
|
-
import click
|
|
6
|
-
|
|
7
|
-
from .gilda.cli import main as gilda_main
|
|
8
|
-
from .mapper.cli import main as mapper_main
|
|
9
|
-
|
|
10
|
-
__all__ = [
|
|
11
|
-
"main",
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@click.group(name="apps")
|
|
16
|
-
def main():
|
|
17
|
-
"""Apps."""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
main.add_command(gilda_main)
|
|
21
|
-
main.add_command(mapper_main)
|
|
22
|
-
|
|
23
|
-
if __name__ == "__main__":
|
|
24
|
-
main()
|
pyobo/apps/gilda/__init__.py
DELETED
pyobo/apps/gilda/__main__.py
DELETED
pyobo/apps/gilda/app.py
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""PyOBO's Gilda Service."""
|
|
4
|
-
|
|
5
|
-
from typing import Iterable, Union
|
|
6
|
-
|
|
7
|
-
import flask
|
|
8
|
-
from flask_bootstrap import Bootstrap
|
|
9
|
-
from flask_wtf import FlaskForm
|
|
10
|
-
from wtforms.fields import StringField, SubmitField
|
|
11
|
-
from wtforms.validators import DataRequired
|
|
12
|
-
|
|
13
|
-
from pyobo.gilda_utils import get_grounder
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class Form(FlaskForm):
|
|
17
|
-
"""Form for submitting a query."""
|
|
18
|
-
|
|
19
|
-
text = StringField("Text", validators=[DataRequired()])
|
|
20
|
-
submit = SubmitField()
|
|
21
|
-
|
|
22
|
-
def make_response(self):
|
|
23
|
-
"""Make a response with the text."""
|
|
24
|
-
return flask.redirect(flask.url_for("ground", text=self.text.data))
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def get_app(prefix: Union[str, Iterable[str]]):
|
|
28
|
-
"""Make an app for grounding the text."""
|
|
29
|
-
grounder = get_grounder(prefix)
|
|
30
|
-
|
|
31
|
-
app = flask.Flask(__name__)
|
|
32
|
-
app.config["WTF_CSRF_ENABLED"] = False
|
|
33
|
-
Bootstrap(app)
|
|
34
|
-
|
|
35
|
-
@app.route("/", methods=["GET", "POST"])
|
|
36
|
-
def home():
|
|
37
|
-
"""Ground the given text."""
|
|
38
|
-
form = Form()
|
|
39
|
-
if form.validate_on_submit():
|
|
40
|
-
return form.make_response()
|
|
41
|
-
return flask.render_template("home.html", form=form)
|
|
42
|
-
|
|
43
|
-
@app.route("/ground/<text>")
|
|
44
|
-
def ground(text: str):
|
|
45
|
-
"""Ground the given text."""
|
|
46
|
-
return flask.jsonify([scored_match.to_json() for scored_match in grounder.ground(text)])
|
|
47
|
-
|
|
48
|
-
return app
|
pyobo/apps/gilda/cli.py
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""CLI for PyOBO's Gilda Service."""
|
|
4
|
-
|
|
5
|
-
import click
|
|
6
|
-
from more_click import (
|
|
7
|
-
host_option,
|
|
8
|
-
port_option,
|
|
9
|
-
run_app,
|
|
10
|
-
verbose_option,
|
|
11
|
-
with_gunicorn_option,
|
|
12
|
-
workers_option,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
__all__ = [
|
|
16
|
-
"main",
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
@click.command(name="gilda")
|
|
21
|
-
@click.argument("prefix", nargs=-1)
|
|
22
|
-
@verbose_option
|
|
23
|
-
@host_option
|
|
24
|
-
@workers_option
|
|
25
|
-
@port_option
|
|
26
|
-
@with_gunicorn_option
|
|
27
|
-
def main(prefix: str, host: str, port: str, with_gunicorn: bool, workers: int):
|
|
28
|
-
"""Run the Gilda service for this database."""
|
|
29
|
-
from .app import get_app
|
|
30
|
-
|
|
31
|
-
app = get_app(prefix)
|
|
32
|
-
run_app(app, host=host, port=port, with_gunicorn=with_gunicorn, workers=workers)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if __name__ == "__main__":
|
|
36
|
-
main()
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
{% block head %}
|
|
5
|
-
<!-- Required meta tags -->
|
|
6
|
-
<meta charset="utf-8">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
8
|
-
|
|
9
|
-
{% block styles %}
|
|
10
|
-
<!-- Bootstrap CSS -->
|
|
11
|
-
{{ bootstrap.load_css() }}
|
|
12
|
-
{% endblock %}
|
|
13
|
-
|
|
14
|
-
<script src="https://kit.fontawesome.com/4c86883252.js" crossorigin="anonymous"></script>
|
|
15
|
-
|
|
16
|
-
<title>{% block title %}{% endblock %}</title>
|
|
17
|
-
{% endblock %}
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div class="container" style="margin-top: 50px; margin-bottom: 50px">
|
|
21
|
-
<div class="row">
|
|
22
|
-
<div class="card">
|
|
23
|
-
<!-- Your page content -->
|
|
24
|
-
{% block content %}{% endblock %}
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
{% block scripts %}
|
|
29
|
-
<!-- Optional JavaScript -->
|
|
30
|
-
{{ bootstrap.load_js() }}
|
|
31
|
-
{% endblock %}
|
|
32
|
-
</body>
|
|
33
|
-
</html>
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{% extends "base.html" %}
|
|
2
|
-
|
|
3
|
-
{% block content %}
|
|
4
|
-
<h5 class="card-header">Gilda</h5>
|
|
5
|
-
<div class="card-body">
|
|
6
|
-
<p>
|
|
7
|
-
Results for <code>{{ form.text.data }}</code>
|
|
8
|
-
{% if form.context.data %} with context
|
|
9
|
-
<i>{{ form.context.data }}</i>{% endif %}
|
|
10
|
-
</p>
|
|
11
|
-
</div>
|
|
12
|
-
<table class="table table-striped table-hover">
|
|
13
|
-
<thead>
|
|
14
|
-
<tr>
|
|
15
|
-
<th>Database</th>
|
|
16
|
-
<th>Identifier</th>
|
|
17
|
-
<th>Name</th>
|
|
18
|
-
<th>Score</th>
|
|
19
|
-
</tr>
|
|
20
|
-
</thead>
|
|
21
|
-
<tbody>
|
|
22
|
-
{% for match in matches %}
|
|
23
|
-
<tr>
|
|
24
|
-
<td>{{ match['term']['db'] }}</td>
|
|
25
|
-
<td>{{ match['term']['id'] }}</td>
|
|
26
|
-
<td>{{ match['term']['entry_name'] }}</td>
|
|
27
|
-
<td class="text-right">{{ match['score'] | round(4) }}</td>
|
|
28
|
-
</tr>
|
|
29
|
-
{% endfor %}
|
|
30
|
-
</tbody>
|
|
31
|
-
</table>
|
|
32
|
-
{% endblock %}
|
pyobo/apps/mapper/__init__.py
DELETED
pyobo/apps/mapper/__main__.py
DELETED
pyobo/apps/mapper/cli.py
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""CLI for PyOBO's Mapping Service.
|
|
4
|
-
|
|
5
|
-
Run with ``python -m pyobo.apps.mapper``.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import click
|
|
9
|
-
from more_click import (
|
|
10
|
-
host_option,
|
|
11
|
-
port_option,
|
|
12
|
-
run_app,
|
|
13
|
-
verbose_option,
|
|
14
|
-
with_gunicorn_option,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
__all__ = [
|
|
18
|
-
"main",
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@click.command(name="mapper")
|
|
23
|
-
@click.option("-x", "--mappings-file")
|
|
24
|
-
@port_option
|
|
25
|
-
@host_option
|
|
26
|
-
@with_gunicorn_option
|
|
27
|
-
@verbose_option
|
|
28
|
-
def main(mappings_file, host: str, port: str, with_gunicorn: bool):
|
|
29
|
-
"""Run the mappings app."""
|
|
30
|
-
from .mapper import get_app
|
|
31
|
-
|
|
32
|
-
app = get_app(mappings_file)
|
|
33
|
-
run_app(app=app, host=host, port=port, with_gunicorn=with_gunicorn)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if __name__ == "__main__":
|
|
37
|
-
main()
|
pyobo/apps/mapper/mapper.py
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""PyOBO's Mapping Service.
|
|
4
|
-
|
|
5
|
-
Run with ``python -m pyobo.apps.mapper``.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import logging
|
|
9
|
-
from functools import lru_cache
|
|
10
|
-
from typing import Any, Dict, Iterable, List, Mapping, Optional, Union
|
|
11
|
-
|
|
12
|
-
import bioregistry
|
|
13
|
-
import pandas as pd
|
|
14
|
-
from flasgger import Swagger
|
|
15
|
-
from flask import (
|
|
16
|
-
Blueprint,
|
|
17
|
-
Flask,
|
|
18
|
-
abort,
|
|
19
|
-
current_app,
|
|
20
|
-
jsonify,
|
|
21
|
-
render_template,
|
|
22
|
-
url_for,
|
|
23
|
-
)
|
|
24
|
-
from flask_bootstrap import VERSION_BOOTSTRAP, Bootstrap
|
|
25
|
-
from werkzeug.local import LocalProxy
|
|
26
|
-
|
|
27
|
-
from pyobo import Canonicalizer
|
|
28
|
-
from pyobo.constants import PROVENANCE, SOURCE_PREFIX, TARGET_PREFIX
|
|
29
|
-
from pyobo.identifier_utils import normalize_curie
|
|
30
|
-
from pyobo.resource_utils import ensure_inspector_javert_df
|
|
31
|
-
|
|
32
|
-
__all__ = [
|
|
33
|
-
"get_app",
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
logger = logging.getLogger(__name__)
|
|
37
|
-
|
|
38
|
-
summary_df = LocalProxy(lambda: current_app.config["summary"])
|
|
39
|
-
canonicalizer: Canonicalizer = LocalProxy(lambda: current_app.config["canonicalizer"])
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@lru_cache()
|
|
43
|
-
def _single_source_shortest_path(curie: str) -> Optional[Mapping[str, List[Mapping[str, str]]]]:
|
|
44
|
-
return canonicalizer.single_source_shortest_path(curie=curie)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@lru_cache()
|
|
48
|
-
def _all_shortest_paths(source_curie: str, target_curie: str) -> List[List[Mapping[str, str]]]:
|
|
49
|
-
return canonicalizer.all_shortest_paths(source_curie=source_curie, target_curie=target_curie)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
#: The blueprint that gets added to the app
|
|
53
|
-
search_blueprint = Blueprint("search", __name__)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@search_blueprint.route("/")
|
|
57
|
-
def home():
|
|
58
|
-
"""Show the home page."""
|
|
59
|
-
return render_template("mapper_home.html")
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@search_blueprint.route("/mappings/<curie>")
|
|
63
|
-
def single_source_mappings(curie: str):
|
|
64
|
-
"""Return all length xrefs from the given identifier."""
|
|
65
|
-
if curie not in canonicalizer.graph:
|
|
66
|
-
return jsonify(
|
|
67
|
-
success=False,
|
|
68
|
-
query=dict(curie=curie),
|
|
69
|
-
message="could not find curie",
|
|
70
|
-
)
|
|
71
|
-
return jsonify(_single_source_shortest_path(curie))
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
@search_blueprint.route("/mappings/<source_curie>/<target_curie>")
|
|
75
|
-
def all_mappings(source_curie: str, target_curie: str):
|
|
76
|
-
"""Return all shortest paths of xrefs between the two identifiers."""
|
|
77
|
-
if source_curie not in canonicalizer.graph:
|
|
78
|
-
return jsonify(
|
|
79
|
-
success=False,
|
|
80
|
-
query=dict(source_curie=source_curie, target_curie=target_curie),
|
|
81
|
-
message="could not find source curie",
|
|
82
|
-
)
|
|
83
|
-
if target_curie not in canonicalizer.graph:
|
|
84
|
-
return jsonify(
|
|
85
|
-
success=False,
|
|
86
|
-
query=dict(source_curie=source_curie, target_curie=target_curie),
|
|
87
|
-
message="could not find target curie",
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
return jsonify(_all_shortest_paths(source_curie, target_curie))
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
@search_blueprint.route("/mappings/summarize")
|
|
94
|
-
def summarize():
|
|
95
|
-
"""Summarize the mappings."""
|
|
96
|
-
return summary_df.to_html(index=False)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
@search_blueprint.route("/mappings/summarize_by/<prefix>")
|
|
100
|
-
def summarize_one(prefix: str):
|
|
101
|
-
"""Summarize the mappings."""
|
|
102
|
-
norm_prefix = bioregistry.normalize_prefix(prefix)
|
|
103
|
-
if norm_prefix is None:
|
|
104
|
-
return abort(500, f"invalid prefix: {prefix}")
|
|
105
|
-
in_df = summary_df.loc[summary_df[TARGET_PREFIX] == norm_prefix, [SOURCE_PREFIX, "count"]]
|
|
106
|
-
out_df = summary_df.loc[summary_df[SOURCE_PREFIX] == norm_prefix, [TARGET_PREFIX, "count"]]
|
|
107
|
-
return f"""
|
|
108
|
-
<h1>Incoming Mappings to {norm_prefix}</h1>
|
|
109
|
-
{in_df.to_html(index=False)}
|
|
110
|
-
<h1>Outgoing Mappings from {norm_prefix}</h1>
|
|
111
|
-
{out_df.to_html(index=False)}
|
|
112
|
-
"""
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
@search_blueprint.route("/canonicalize/<curie>")
|
|
116
|
-
def canonicalize(curie: str):
|
|
117
|
-
"""Return the best CURIE."""
|
|
118
|
-
# TODO maybe normalize the curie first?
|
|
119
|
-
norm_prefix, norm_identifier = normalize_curie(curie)
|
|
120
|
-
if norm_prefix is None or norm_identifier is None:
|
|
121
|
-
return jsonify(
|
|
122
|
-
query=curie,
|
|
123
|
-
normalizable=False,
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
norm_curie = f"{norm_prefix}:{norm_identifier}"
|
|
127
|
-
|
|
128
|
-
rv: Dict[str, Any] = dict(query=curie)
|
|
129
|
-
if norm_curie != curie:
|
|
130
|
-
rv["norm_curie"] = norm_curie
|
|
131
|
-
|
|
132
|
-
if norm_curie not in canonicalizer.graph:
|
|
133
|
-
rv["found"] = False
|
|
134
|
-
else:
|
|
135
|
-
result_curie = canonicalizer.canonicalize(norm_curie)
|
|
136
|
-
rv.update(
|
|
137
|
-
found=True,
|
|
138
|
-
result=result_curie,
|
|
139
|
-
mappings=url_for(
|
|
140
|
-
f".{all_mappings.__name__}",
|
|
141
|
-
source_curie=norm_curie,
|
|
142
|
-
target_curie=result_curie,
|
|
143
|
-
),
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
return jsonify(rv)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def get_app(paths: Union[None, str, Iterable[str]] = None) -> Flask:
|
|
150
|
-
"""Build the Flask app."""
|
|
151
|
-
app = Flask(__name__)
|
|
152
|
-
Swagger(app)
|
|
153
|
-
|
|
154
|
-
logger.info("using bootstrap_flask %s", VERSION_BOOTSTRAP)
|
|
155
|
-
Bootstrap(app)
|
|
156
|
-
|
|
157
|
-
if paths is None:
|
|
158
|
-
df = ensure_inspector_javert_df()
|
|
159
|
-
elif isinstance(paths, str):
|
|
160
|
-
df = pd.read_csv(paths, sep="\t", dtype=str)
|
|
161
|
-
else:
|
|
162
|
-
df = pd.concat(pd.read_csv(path, sep="\t", dtype=str) for path in paths)
|
|
163
|
-
|
|
164
|
-
app.config["summary"] = summarize_xref_df(df)
|
|
165
|
-
app.config["summary_provenances"] = summarize_xref_provenances_df(df)
|
|
166
|
-
# TODO allow for specification of priorities in the canonicalizer
|
|
167
|
-
app.config["canonicalizer"] = Canonicalizer.from_df(df)
|
|
168
|
-
app.register_blueprint(search_blueprint)
|
|
169
|
-
return app
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
def summarize_xref_df(df: pd.DataFrame) -> pd.DataFrame:
|
|
173
|
-
"""Get all meta-mappings."""
|
|
174
|
-
return _summarize(df, [SOURCE_PREFIX, TARGET_PREFIX])
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
def summarize_xref_provenances_df(df: pd.DataFrame) -> pd.DataFrame:
|
|
178
|
-
"""Get all meta-mappings."""
|
|
179
|
-
return _summarize(df, [SOURCE_PREFIX, TARGET_PREFIX, PROVENANCE])
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
def _summarize(df: pd.DataFrame, columns) -> pd.DataFrame:
|
|
183
|
-
"""Get all meta-mappings."""
|
|
184
|
-
rv = df[columns].groupby(columns).size().reset_index()
|
|
185
|
-
rv.columns = [*columns, "count"]
|
|
186
|
-
rv.sort_values("count", inplace=True, ascending=False)
|
|
187
|
-
return rv
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
{% block head %}
|
|
5
|
-
<!-- Required meta tags -->
|
|
6
|
-
<meta charset="utf-8">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
8
|
-
|
|
9
|
-
{% block styles %}
|
|
10
|
-
<!-- Bootstrap CSS -->
|
|
11
|
-
{{ bootstrap.load_css() }}
|
|
12
|
-
{% endblock %}
|
|
13
|
-
|
|
14
|
-
<script src="https://kit.fontawesome.com/4c86883252.js" crossorigin="anonymous"></script>
|
|
15
|
-
|
|
16
|
-
<title>{% block title %}{% endblock %}</title>
|
|
17
|
-
{% endblock %}
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div class="container" style="margin-top: 25px; margin-bottom: 25px">
|
|
21
|
-
<div class="row justify-content-center">
|
|
22
|
-
<div class="col-md-8 col-lg-8">
|
|
23
|
-
<div class="card">
|
|
24
|
-
<!-- Your page content -->
|
|
25
|
-
{% block content %}{% endblock %}
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
{% block scripts %}
|
|
31
|
-
<!-- Optional JavaScript -->
|
|
32
|
-
{{ bootstrap.load_js() }}
|
|
33
|
-
{% endblock %}
|
|
34
|
-
</body>
|
|
35
|
-
</html>
|