@datagrok/bio 2.4.43 → 2.4.45
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.
- package/dist/package-test.js +1 -1
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/files/data/sample_HELM_empty_vals.csv +10 -10
- package/files/samples/sample_HELM.csv +9 -9
- package/package.json +2 -2
- package/src/function-edtiors/split-to-monomers-editor.ts +42 -0
- package/src/package-test.ts +3 -1
- package/src/package.ts +31 -21
- package/src/tests/splitters-test.ts +9 -7
- package/src/utils/cell-renderer.ts +5 -54
- package/src/utils/monomer-cell-renderer.ts +100 -0
- package/src/utils/split-to-monomers.ts +29 -0
|
@@ -67,7 +67,7 @@ PEPTIDE1{meI.Pip.dK.Thr_PO3H2.pnT.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Cys_SEt.N.D-Orn.D
|
|
|
67
67
|
PEPTIDE1{meI.D-2Thi.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,5.49809
|
|
68
68
|
PEPTIDE1{meI.dE.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.D-Thz.N.D-Orn.D-aThr.Phe_4Me}$$$$,6.53041
|
|
69
69
|
PEPTIDE1{meI.D-Hyp.N.T.dK.Thr_PO3H2.Trp_Ome.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$,3.07080
|
|
70
|
-
"PEPTIDE1{meI.Pip.dK.Thr_PO3H2.L-hArg(Et,Et).D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$",4.44629
|
|
70
|
+
"PEPTIDE1{meI.Pip.dK.Thr_PO3H2.[L-hArg(Et,Et)].D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$",4.44629
|
|
71
71
|
PEPTIDE1{meI.T.dK.Thr_PO3H2.D-Thz.D-Tyr_Et.Tyr_ab-dehydroMe.dV.D-Thz.N.D-Orn.xiHyp.Phe_4Me}$$$$,6.32360
|
|
72
72
|
PEPTIDE1{meI.1Nal.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,5.90846
|
|
73
73
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Phe_4Sdihydroorotamido.dV.E.N.dV.Phe_4Me}$$$$,2.47020
|
|
@@ -186,8 +186,8 @@ PEPTIDE1{meI.Aca.N.T.meV.Thr_PO3H2.Aca.seC.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn
|
|
|
186
186
|
PEPTIDE1{meI.Aca.Cys_SEt.T.meV.Thr_PO3H2.Aca.Tyr_PO3H2.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,7.10947
|
|
187
187
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Bmt.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,1.82444
|
|
188
188
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.Sta_3S4S.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,1.77812
|
|
189
|
-
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.L-hArg(Et,Et).aMePhe.Phe_4Me}$$$$",3.68767
|
|
190
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aMePhe.Phe_4Me}$$$$",3.88535
|
|
189
|
+
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.[L-hArg(Et,Et)].aMePhe.Phe_4Me}$$$$",3.68767
|
|
190
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aMePhe.Phe_4Me}$$$$",3.88535
|
|
191
191
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Me}$$$$,6.58770
|
|
192
192
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Nle.Phe_4Me}$$$$,1.90002
|
|
193
193
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.NMe2Abz.Phe_4Me}$$$$,4.77066
|
|
@@ -228,16 +228,16 @@ PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.
|
|
|
228
228
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Thr_PO3H2.aIle.Phe_4Me}$$$$,3.33894
|
|
229
229
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Thr_PO3H2.aIle.Phe_4Me}$$$$,1.65063
|
|
230
230
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Phe_4Sdihydroorotamido.aIle.Phe_4Me}$$$$,2.65963
|
|
231
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.08747
|
|
231
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.08747
|
|
232
232
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Bmt.E.N.dV.Phe_4Me}$$$$,2.47859
|
|
233
233
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Phe_4Br.aIle.Phe_4Me}$$$$,1.64943
|
|
234
234
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.Phe_4Me}$$$$,1.78684
|
|
235
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",1.64537
|
|
235
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",1.64537
|
|
236
236
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.H.meF}$$$$,5.98851
|
|
237
237
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.Phe_4Me}$$$$,4.63562
|
|
238
238
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.Wil.D-aThr.Phe_4Me}$$$$,4.03158
|
|
239
239
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Br.Phe_4Me}$$$$,2.82505
|
|
240
|
-
"PEPTIDE1{meI.Aca.N.T.dK.NMebAla.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.91273
|
|
240
|
+
"PEPTIDE1{meI.Aca.N.T.dK.NMebAla.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.91273
|
|
241
241
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.meF}$$$$,4.68059
|
|
242
242
|
PEPTIDE1{D-Phg.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,3.68825
|
|
243
243
|
PEPTIDE1{D-Phg.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.pnG.Phe_4Me}$$$$,2.91926
|
|
@@ -264,7 +264,7 @@ PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.P.
|
|
|
264
264
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.Phe_4Br.Phe_4Me}$$$$,5.14651
|
|
265
265
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Br.Phe_4Me}$$$$,1.91246
|
|
266
266
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Br.Phe_4Me}$$$$,1.51989
|
|
267
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Y.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.00778
|
|
267
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Y.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.00778
|
|
268
268
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.Phe_4Br.Phe_4Me}$$$$,6.52448
|
|
269
269
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.aThr.aIle.Phe_4Me}$$$$,2.28325
|
|
270
270
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Abu.aIle.Phe_4Me}$$$$,3.19869
|
|
@@ -272,7 +272,7 @@ PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.
|
|
|
272
272
|
PEPTIDE1{aThr.hHis.Hcy.Q.T.W.Q.Phe_4NH2.Pqa.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Me}$$$$,3.64898
|
|
273
273
|
PEPTIDE1{hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Me}$$$$,4.52096
|
|
274
274
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.Phe_4Sdihydroorotamido.aIle.Phe_4Me}$$$$,3.57961
|
|
275
|
-
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",2.57664
|
|
275
|
+
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",2.57664
|
|
276
276
|
PEPTIDE1{4Pal.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,2.82918
|
|
277
277
|
PEPTIDE1{Phe_4Sdihydroorotamido.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,2.62389
|
|
278
278
|
PEPTIDE1{Phe_4Sdihydroorotamido.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.pnG.Phe_4Me}$$$$,2.61653
|
|
@@ -518,7 +518,7 @@ PEPTIDE1{D-Hyp.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me
|
|
|
518
518
|
PEPTIDE1{hPhe.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.14182
|
|
519
519
|
PEPTIDE1{D-Cha.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.51577
|
|
520
520
|
PEPTIDE1{D-Cit.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,4.51122
|
|
521
|
-
"PEPTIDE1{L-hArg(Et,Et).hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$",1.71900
|
|
521
|
+
"PEPTIDE1{[L-hArg(Et,Et)].hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$",1.71900
|
|
522
522
|
PEPTIDE1{D-Pip.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.28024
|
|
523
523
|
PEPTIDE1{meI.hHis.Phe_4NH2.Q.T.W.Q.A.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Aca.N.dV.Phe_4Me}$$$$,3.43997
|
|
524
524
|
PEPTIDE1{aThr.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Q.N.dV.Phe_4Me}$$$$,3.87007
|
|
@@ -538,4 +538,4 @@ PEPTIDE1{aThr.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Q.N.N.Phe_4Me}$$
|
|
|
538
538
|
PEPTIDE1{meI.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,1.32725
|
|
539
539
|
PEPTIDE1{meI.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Thr_PO3H2.Phe_4Me}$$$$,2.25061
|
|
540
540
|
PEPTIDE1{meI.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Me}$$$$,4.24268
|
|
541
|
-
PEPTIDE1{meI.hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.N.meK}$$$$,2.93796
|
|
541
|
+
PEPTIDE1{meI.hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.N.meK}$$$$,2.93796
|
|
@@ -67,7 +67,7 @@ PEPTIDE1{meI.Pip.dK.Thr_PO3H2.pnT.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Cys_SEt.N.D-Orn.D
|
|
|
67
67
|
PEPTIDE1{meI.D-2Thi.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,5.498092811954772
|
|
68
68
|
PEPTIDE1{meI.dE.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.D-Thz.N.D-Orn.D-aThr.Phe_4Me}$$$$,6.530409397097947
|
|
69
69
|
PEPTIDE1{meI.D-Hyp.N.T.dK.Thr_PO3H2.Trp_Ome.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$,3.0707953636156904
|
|
70
|
-
"PEPTIDE1{meI.Pip.dK.Thr_PO3H2.L-hArg(Et,Et).D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$",4.446288741243438
|
|
70
|
+
"PEPTIDE1{meI.Pip.dK.Thr_PO3H2.[L-hArg(Et,Et)].D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$$",4.446288741243438
|
|
71
71
|
PEPTIDE1{meI.T.dK.Thr_PO3H2.D-Thz.D-Tyr_Et.Tyr_ab-dehydroMe.dV.D-Thz.N.D-Orn.xiHyp.Phe_4Me}$$$$,6.323600736629789
|
|
72
72
|
PEPTIDE1{meI.1Nal.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,5.908457627999418
|
|
73
73
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Phe_4Sdihydroorotamido.dV.E.N.dV.Phe_4Me}$$$$,2.470202136498731
|
|
@@ -186,8 +186,8 @@ PEPTIDE1{meI.Aca.N.T.meV.Thr_PO3H2.Aca.seC.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn
|
|
|
186
186
|
PEPTIDE1{meI.Aca.Cys_SEt.T.meV.Thr_PO3H2.Aca.Tyr_PO3H2.Tyr_ab-dehydroMe.dV.Thr_PO3H2.N.D-Orn.D-aThr.Phe_4Me}$$$$,7.109470365722368
|
|
187
187
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Bmt.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,1.8244375314899504
|
|
188
188
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.Sta_3S4S.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,1.7781172584274643
|
|
189
|
-
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.L-hArg(Et,Et).aMePhe.Phe_4Me}$$$$",3.6876680890303573
|
|
190
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aMePhe.Phe_4Me}$$$$",3.885351901433885
|
|
189
|
+
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.[L-hArg(Et,Et)].aMePhe.Phe_4Me}$$$$",3.6876680890303573
|
|
190
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aMePhe.Phe_4Me}$$$$",3.885351901433885
|
|
191
191
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Me}$$$$,6.587703329147981
|
|
192
192
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Nle.Phe_4Me}$$$$,1.9000245681406613
|
|
193
193
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.NMe2Abz.Phe_4Me}$$$$,4.770661284446072
|
|
@@ -228,16 +228,16 @@ PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.
|
|
|
228
228
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Thr_PO3H2.aIle.Phe_4Me}$$$$,3.3389403645983493
|
|
229
229
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Thr_PO3H2.aIle.Phe_4Me}$$$$,1.6506289932771743
|
|
230
230
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Phe_4Sdihydroorotamido.aIle.Phe_4Me}$$$$,2.659629204495798
|
|
231
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.087473757566119
|
|
231
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.087473757566119
|
|
232
232
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Bmt.E.N.dV.Phe_4Me}$$$$,2.478589999479269
|
|
233
233
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Phe_4Br.aIle.Phe_4Me}$$$$,1.6494256005133707
|
|
234
234
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.Phe_4Me}$$$$,1.78684326935583
|
|
235
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",1.6453684524431091
|
|
235
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Bmt.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",1.6453684524431091
|
|
236
236
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.H.meF}$$$$,5.988508994120261
|
|
237
237
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.Phe_4Me}$$$$,4.635621184071095
|
|
238
238
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.Wil.D-aThr.Phe_4Me}$$$$,4.0315803729988104
|
|
239
239
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Br.Phe_4Me}$$$$,2.8250500411654027
|
|
240
|
-
"PEPTIDE1{meI.Aca.N.T.dK.NMebAla.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.9127323843184634
|
|
240
|
+
"PEPTIDE1{meI.Aca.N.T.dK.NMebAla.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.9127323843184634
|
|
241
241
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.meF}$$$$,4.6805888900858905
|
|
242
242
|
PEPTIDE1{D-Phg.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,3.6882506732559195
|
|
243
243
|
PEPTIDE1{D-Phg.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.pnG.Phe_4Me}$$$$,2.9192556721175547
|
|
@@ -264,7 +264,7 @@ PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.P.
|
|
|
264
264
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.meN.E.N.dV.Phe_4Br.Phe_4Me}$$$$,5.146512682388665
|
|
265
265
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Br.Phe_4Me}$$$$,1.9124580115395204
|
|
266
266
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.NMe2Abz.Phe_4Br.Phe_4Me}$$$$,1.5198888206477554
|
|
267
|
-
"PEPTIDE1{meI.Aca.N.T.dK.Y.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",3.00777986470196
|
|
267
|
+
"PEPTIDE1{meI.Aca.N.T.dK.Y.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",3.00777986470196
|
|
268
268
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.H.Phe_4Br.Phe_4Me}$$$$,6.524477880041829
|
|
269
269
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.aThr.aIle.Phe_4Me}$$$$,2.283252227152765
|
|
270
270
|
PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.Abu.aIle.Phe_4Me}$$$$,3.198688180483653
|
|
@@ -272,7 +272,7 @@ PEPTIDE1{meI.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.
|
|
|
272
272
|
PEPTIDE1{aThr.hHis.Hcy.Q.T.W.Q.Phe_4NH2.Pqa.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Me}$$$$,3.648982655817461
|
|
273
273
|
PEPTIDE1{hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.dV.Phe_4Me}$$$$,4.520962030409236
|
|
274
274
|
PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.Phe_4Sdihydroorotamido.aIle.Phe_4Me}$$$$,3.5796109982815167
|
|
275
|
-
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.L-hArg(Et,Et).aIle.Phe_4Me}$$$$",2.5766403379072265
|
|
275
|
+
"PEPTIDE1{meI.hHis.Aca.N.T.dK.Aca.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.Phe_2F.E.N.[L-hArg(Et,Et)].aIle.Phe_4Me}$$$$",2.5766403379072265
|
|
276
276
|
PEPTIDE1{4Pal.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,2.8291809080348127
|
|
277
277
|
PEPTIDE1{Phe_4Sdihydroorotamido.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.pnG.Phe_4Me}$$$$,2.6238859059178843
|
|
278
278
|
PEPTIDE1{Phe_4Sdihydroorotamido.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.D-Dap.Thr_PO3H2.N.pnG.Phe_4Me}$$$$,2.6165284113368177
|
|
@@ -518,7 +518,7 @@ PEPTIDE1{D-Hyp.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me
|
|
|
518
518
|
PEPTIDE1{hPhe.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.1418194571114264
|
|
519
519
|
PEPTIDE1{D-Cha.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.515774844415832
|
|
520
520
|
PEPTIDE1{D-Cit.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,4.511219910644476
|
|
521
|
-
"PEPTIDE1{L-hArg(Et,Et).hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$",1.718996048903543
|
|
521
|
+
"PEPTIDE1{[L-hArg(Et,Et)].hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$",1.718996048903543
|
|
522
522
|
PEPTIDE1{D-Pip.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.Bmt.Phe_4Me}$$$$,3.280243278344309
|
|
523
523
|
PEPTIDE1{meI.hHis.Phe_4NH2.Q.T.W.Q.A.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Aca.N.dV.Phe_4Me}$$$$,3.439973801104992
|
|
524
524
|
PEPTIDE1{aThr.hHis.Aca.Q.T.W.Q.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.Q.N.dV.Phe_4Me}$$$$,3.870066006558282
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"name": "Leonid Stolbov",
|
|
6
6
|
"email": "lstolbov@datagrok.ai"
|
|
7
7
|
},
|
|
8
|
-
"version": "2.4.
|
|
8
|
+
"version": "2.4.45",
|
|
9
9
|
"description": "Bioinformatics support (import/export of sequences, conversion, visualization, analysis). [See more](https://github.com/datagrok-ai/public/blob/master/packages/Bio/README.md) for details.",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@biowasm/aioli": "^3.1.0",
|
|
17
|
-
"@datagrok-libraries/bio": "^5.32.
|
|
17
|
+
"@datagrok-libraries/bio": "^5.32.3",
|
|
18
18
|
"@datagrok-libraries/chem-meta": "^1.0.1",
|
|
19
19
|
"@datagrok-libraries/ml": "^6.3.39",
|
|
20
20
|
"@datagrok-libraries/tutorials": "^1.3.2",
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as grok from 'datagrok-api/grok';
|
|
2
|
+
import * as ui from 'datagrok-api/ui';
|
|
3
|
+
import * as DG from 'datagrok-api/dg';
|
|
4
|
+
|
|
5
|
+
export class SplitToMonomersFunctionEditor {
|
|
6
|
+
tableInput: DG.InputBase;
|
|
7
|
+
seqColInput: DG.InputBase;
|
|
8
|
+
|
|
9
|
+
funcParamsDiv: HTMLDivElement;
|
|
10
|
+
|
|
11
|
+
get funcParams(): {} {
|
|
12
|
+
return {
|
|
13
|
+
table: this.tableInput.value!,
|
|
14
|
+
sequence: this.seqColInput.value!,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
get paramsUI(): HTMLDivElement {
|
|
19
|
+
return this.funcParamsDiv;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
constructor() {
|
|
23
|
+
this.tableInput = ui.tableInput('Table', grok.shell.tv.dataFrame, undefined, () => {
|
|
24
|
+
this.onTableInputChanged();
|
|
25
|
+
});
|
|
26
|
+
//TODO: remove when the new version of datagrok-api is available
|
|
27
|
+
const seqColValue = this.tableInput.value!.columns.bySemType(DG.SEMTYPE.MACROMOLECULE);
|
|
28
|
+
const seqColOptions = {filter: (col: DG.Column) => col.semType === DG.SEMTYPE.MACROMOLECULE};
|
|
29
|
+
//@ts-ignore
|
|
30
|
+
this.seqColInput = ui.columnInput('Sequence', this.tableInput.value!, seqColValue, null, seqColOptions);
|
|
31
|
+
|
|
32
|
+
this.funcParamsDiv = ui.inputs([
|
|
33
|
+
this.tableInput,
|
|
34
|
+
this.seqColInput,
|
|
35
|
+
], {style: {minWidth: '320px'}});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
onTableInputChanged(): void {
|
|
39
|
+
this.seqColInput = ui.columnInput('Sequence', this.tableInput.value!,
|
|
40
|
+
this.tableInput.value!.columns.bySemType(DG.SEMTYPE.MACROMOLECULE));
|
|
41
|
+
}
|
|
42
|
+
}
|
package/src/package-test.ts
CHANGED
|
@@ -8,7 +8,9 @@ import './tests/detectors-tests';
|
|
|
8
8
|
import './tests/detectors-weak-and-likely-tests';
|
|
9
9
|
import './tests/detectors-benchmark-tests';
|
|
10
10
|
import './tests/msa-tests';
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
import './tests/splitters-test'; //Unhandled exceptions.exceptions : Cannot read properties of null (reading 'f')
|
|
13
|
+
|
|
12
14
|
import './tests/monomer-libraries-tests';
|
|
13
15
|
import './tests/renderers-test';
|
|
14
16
|
import './tests/converters-test';
|
package/src/package.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
3
|
import * as ui from 'datagrok-api/ui';
|
|
4
4
|
import * as DG from 'datagrok-api/dg';
|
|
5
|
+
|
|
5
6
|
import {
|
|
6
|
-
MacromoleculeDifferenceCellRenderer, MacromoleculeSequenceCellRenderer,
|
|
7
|
+
MacromoleculeDifferenceCellRenderer, MacromoleculeSequenceCellRenderer,
|
|
7
8
|
} from './utils/cell-renderer';
|
|
8
9
|
import {VdRegionsViewer} from './viewers/vd-regions-viewer';
|
|
9
10
|
import {SequenceAlignment} from './seq_align';
|
|
@@ -18,8 +19,6 @@ import {_toAtomicLevel} from '@datagrok-libraries/bio/src/monomer-works/to-atomi
|
|
|
18
19
|
import {FastaFileHandler} from '@datagrok-libraries/bio/src/utils/fasta-handler';
|
|
19
20
|
import {removeEmptyStringRows} from '@datagrok-libraries/utils/src/dataframe-utils';
|
|
20
21
|
|
|
21
|
-
import {splitAlignedSequences} from '@datagrok-libraries/bio/src/utils/splitter';
|
|
22
|
-
import * as C from './utils/constants';
|
|
23
22
|
import {SequenceSimilarityViewer} from './analysis/sequence-similarity-viewer';
|
|
24
23
|
import {SequenceDiversityViewer} from './analysis/sequence-diversity-viewer';
|
|
25
24
|
import {substructureSearchDialog} from './substructure-search/substructure-search';
|
|
@@ -39,6 +38,7 @@ import {getMacromoleculeColumn} from './utils/ui-utils';
|
|
|
39
38
|
import {DimReductionMethods, ITSNEOptions, IUMAPOptions} from '@datagrok-libraries/ml/src/reduce-dimensionality';
|
|
40
39
|
import {SequenceSpaceFunctionEditor} from '@datagrok-libraries/ml/src/functionEditors/seq-space-editor';
|
|
41
40
|
import {ActivityCliffsFunctionEditor} from '@datagrok-libraries/ml/src/functionEditors/activity-cliffs-editor';
|
|
41
|
+
|
|
42
42
|
import {demoBio01UI} from './demo/bio01-similarity-diversity';
|
|
43
43
|
import {demoBio01aUI} from './demo/bio01a-hierarchical-clustering-and-sequence-space';
|
|
44
44
|
import {demoBio01bUI} from './demo/bio01b-hierarchical-clustering-and-activity-cliffs';
|
|
@@ -50,6 +50,9 @@ import {MmDistanceFunctionsNames} from '@datagrok-libraries/ml/src/macromolecule
|
|
|
50
50
|
import {BitArrayMetrics, BitArrayMetricsNames} from '@datagrok-libraries/ml/src/typed-metrics';
|
|
51
51
|
import {NotationConverter} from '@datagrok-libraries/bio/src/utils/notation-converter';
|
|
52
52
|
import {WebLogoApp} from './apps/web-logo-app';
|
|
53
|
+
import {SplitToMonomersFunctionEditor} from './function-edtiors/split-to-monomers-editor';
|
|
54
|
+
import {splitToMonomersUI} from './utils/split-to-monomers';
|
|
55
|
+
import {MonomerCellRenderer} from './utils/monomer-cell-renderer';
|
|
53
56
|
|
|
54
57
|
export const _package = new DG.Package();
|
|
55
58
|
|
|
@@ -248,7 +251,7 @@ export function SeqActivityCliffsEditor(call: DG.FuncCall) {
|
|
|
248
251
|
ui.dialog({title: 'Activity Cliffs'})
|
|
249
252
|
.add(funcEditor.paramsUI)
|
|
250
253
|
.onOK(async () => {
|
|
251
|
-
call.func.prepare(funcEditor.funcParams).call(true);
|
|
254
|
+
return call.func.prepare(funcEditor.funcParams).call(true);
|
|
252
255
|
})
|
|
253
256
|
.show();
|
|
254
257
|
}
|
|
@@ -342,7 +345,7 @@ export function SequenceSpaceEditor(call: DG.FuncCall) {
|
|
|
342
345
|
ui.dialog({title: 'Sequence Space'})
|
|
343
346
|
.add(funcEditor.paramsUI)
|
|
344
347
|
.onOK(async () => {
|
|
345
|
-
call.func.prepare(funcEditor.funcParams).call(true);
|
|
348
|
+
return call.func.prepare(funcEditor.funcParams).call(true);
|
|
346
349
|
})
|
|
347
350
|
.show();
|
|
348
351
|
}
|
|
@@ -364,8 +367,7 @@ export async function sequenceSpaceTopMenu(
|
|
|
364
367
|
// Delay is required for initial function dialog to close before starting invalidating of molfiles.
|
|
365
368
|
// Otherwise, dialog is freezing
|
|
366
369
|
await delay(10);
|
|
367
|
-
if (!checkInputColumnUI(macroMolecule, 'Sequence space'))
|
|
368
|
-
return;
|
|
370
|
+
if (!checkInputColumnUI(macroMolecule, 'Sequence space')) return;
|
|
369
371
|
|
|
370
372
|
const embedColsNames = getEmbeddingColsNames(table);
|
|
371
373
|
const withoutEmptyValues = DG.DataFrame.fromColumns([macroMolecule]).clone();
|
|
@@ -586,6 +588,7 @@ export function convertDialog() {
|
|
|
586
588
|
//name: monomerCellRenderer
|
|
587
589
|
//tags: cellRenderer
|
|
588
590
|
//meta.cellType: Monomer
|
|
591
|
+
//meta.columnTags: quality=Monomer
|
|
589
592
|
//output: grid_cell_renderer result
|
|
590
593
|
export function monomerCellRenderer(): MonomerCellRenderer {
|
|
591
594
|
return new MonomerCellRenderer();
|
|
@@ -642,20 +645,27 @@ export async function testDetectMacromolecule(path: string): Promise<DG.DataFram
|
|
|
642
645
|
return resDf;
|
|
643
646
|
}
|
|
644
647
|
|
|
645
|
-
//
|
|
646
|
-
//
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
const
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
648
|
+
//name: SplitToMonomersEditor
|
|
649
|
+
//tags: editor
|
|
650
|
+
//input: funccall call
|
|
651
|
+
export function SplitToMonomersEditor(call: DG.FuncCall): void {
|
|
652
|
+
const funcEditor = new SplitToMonomersFunctionEditor();
|
|
653
|
+
ui.dialog({title: 'Split to Monomers'})
|
|
654
|
+
.add(funcEditor.paramsUI)
|
|
655
|
+
.onOK(async () => {
|
|
656
|
+
return call.func.prepare(funcEditor.funcParams).call(true);
|
|
657
|
+
})
|
|
658
|
+
.show();
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
//top-menu: Bio | Split to Monomers
|
|
662
|
+
//name: Split to Monomers
|
|
663
|
+
//input: dataframe table
|
|
664
|
+
//input: column sequence { semType: Macromolecule }
|
|
665
|
+
//output: dataframe result
|
|
666
|
+
//editor: Bio:SplitToMonomersEditor
|
|
667
|
+
export async function splitToMonomersTopMenu(table: DG.DataFrame, sequence: DG.Column): Promise<void> {
|
|
668
|
+
await splitToMonomersUI(table, sequence);
|
|
659
669
|
}
|
|
660
670
|
|
|
661
671
|
//name: Bio: getHelmMonomers
|
|
@@ -6,6 +6,7 @@ import {after, before, category, test, expect, expectArray, delay} from '@datagr
|
|
|
6
6
|
import * as C from '../utils/constants';
|
|
7
7
|
import {_package, getHelmMonomers} from '../package';
|
|
8
8
|
import {TAGS as bioTAGS, splitterAsFasta, splitterAsHelm} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
9
|
+
import {splitToMonomersUI} from '../utils/split-to-monomers';
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
category('splitters', async () => {
|
|
@@ -77,14 +78,15 @@ category('splitters', async () => {
|
|
|
77
78
|
seqCol.semType = semType;
|
|
78
79
|
seqCol.setTag(bioTAGS.aligned, C.MSA);
|
|
79
80
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
// call to calculate 'cell.renderer' tag
|
|
83
|
-
await grok.data.detectSemanticTypes(df);
|
|
81
|
+
const newDf = await splitToMonomersUI(df, seqCol);
|
|
82
|
+
expect(newDf.columns.names().includes('17'), true);
|
|
84
83
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
// TODO: Check cell.renderer for columns of monomers
|
|
85
|
+
// const _tv: DG.TableView = grok.shell.addTableView(df);
|
|
86
|
+
// await delay(500); // needed to account for table adding
|
|
87
|
+
// // call to calculate 'cell.renderer' tag
|
|
88
|
+
// await grok.data.detectSemanticTypes(df);
|
|
89
|
+
}, {skipReason: 'GROK-13300'});
|
|
88
90
|
|
|
89
91
|
test('getHelmMonomers', async () => {
|
|
90
92
|
const df: DG.DataFrame = DG.DataFrame.fromCsv(
|
|
@@ -3,9 +3,8 @@ import * as DG from 'datagrok-api/dg';
|
|
|
3
3
|
import * as ui from 'datagrok-api/ui';
|
|
4
4
|
|
|
5
5
|
import {printLeftOrCentered, DrawStyle} from '@datagrok-libraries/bio/src/utils/cell-renderer';
|
|
6
|
-
import * as C from './constants';
|
|
7
6
|
import {
|
|
8
|
-
ALIGNMENT,
|
|
7
|
+
ALIGNMENT, ALPHABET,
|
|
9
8
|
getPaletteByType,
|
|
10
9
|
getSplitter,
|
|
11
10
|
monomerToShort,
|
|
@@ -15,6 +14,10 @@ import {
|
|
|
15
14
|
} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
16
15
|
import {SeqPalette} from '@datagrok-libraries/bio/src/seq-palettes';
|
|
17
16
|
import {UnknownSeqPalettes} from '@datagrok-libraries/bio/src/unknown';
|
|
17
|
+
import {MonomerWorks} from '@datagrok-libraries/bio/src/monomer-works/monomer-works';
|
|
18
|
+
|
|
19
|
+
import {_package, getMonomerLibHelper} from '../package';
|
|
20
|
+
import * as C from './constants';
|
|
18
21
|
|
|
19
22
|
const enum tempTAGS {
|
|
20
23
|
referenceSequence = 'reference-sequence',
|
|
@@ -215,58 +218,6 @@ export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
|
|
|
215
218
|
}
|
|
216
219
|
}
|
|
217
220
|
|
|
218
|
-
export class MonomerCellRenderer extends DG.GridCellRenderer {
|
|
219
|
-
get name(): string { return C.SEM_TYPES.MONOMER; }
|
|
220
|
-
|
|
221
|
-
get cellType(): string { return C.SEM_TYPES.MONOMER; }
|
|
222
|
-
|
|
223
|
-
get defaultHeight(): number { return 15; }
|
|
224
|
-
|
|
225
|
-
get defaultWidth(): number { return 30; }
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Cell renderer function.
|
|
229
|
-
*
|
|
230
|
-
* @param {CanvasRenderingContext2D} g Canvas rendering context.
|
|
231
|
-
* @param {number} x x coordinate on the canvas.
|
|
232
|
-
* @param {number} y y coordinate on the canvas.
|
|
233
|
-
* @param {number} w width of the cell.
|
|
234
|
-
* @param {number} h height of the cell.
|
|
235
|
-
* @param {DG.GridCell} gridCell Grid cell.
|
|
236
|
-
* @param {DG.GridCellStyle} _cellStyle Cell style.
|
|
237
|
-
*/
|
|
238
|
-
render(
|
|
239
|
-
g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, gridCell: DG.GridCell,
|
|
240
|
-
_cellStyle: DG.GridCellStyle): void {
|
|
241
|
-
g.font = `12px monospace`;
|
|
242
|
-
g.textBaseline = 'middle';
|
|
243
|
-
g.textAlign = 'center';
|
|
244
|
-
|
|
245
|
-
const palette = getPaletteByType(gridCell.cell.column.getTag(bioTAGS.alphabet));
|
|
246
|
-
const s: string = gridCell.cell.value;
|
|
247
|
-
if (!s)
|
|
248
|
-
return;
|
|
249
|
-
const color = palette.get(s);
|
|
250
|
-
|
|
251
|
-
g.fillStyle = color;
|
|
252
|
-
g.fillText(monomerToShort(s, 3), x + (w / 2), y + (h / 2), w);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
svgMolOptions = {autoCrop: true, autoCropMargin: 0, suppressChiralText: true};
|
|
256
|
-
|
|
257
|
-
onMouseEnter(gridCell: DG.GridCell, e: MouseEvent) {
|
|
258
|
-
super.onMouseEnter(gridCell, e);
|
|
259
|
-
|
|
260
|
-
// TODO: Display monomer structure within tooltip
|
|
261
|
-
// const monomerName = gridCell.cell.value;
|
|
262
|
-
// const mw = getMonomerWorksInstance();
|
|
263
|
-
// // TODO: Display monomer structure in Tooltip
|
|
264
|
-
// const nameDiv = ui.div(monomerName);
|
|
265
|
-
// const molDiv = grok.chem.svgMol(monomerMol, undefined, undefined, svgMolOptions);
|
|
266
|
-
//
|
|
267
|
-
// ui.tooltip.show(ui.divV([nameDiv, molEl,]), x, y);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
221
|
|
|
271
222
|
export class MacromoleculeDifferenceCellRenderer extends DG.GridCellRenderer {
|
|
272
223
|
get name(): string { return 'MacromoleculeDifferenceCR'; }
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as grok from 'datagrok-api/grok';
|
|
2
|
+
import * as DG from 'datagrok-api/dg';
|
|
3
|
+
import * as ui from 'datagrok-api/ui';
|
|
4
|
+
|
|
5
|
+
import {ALPHABET, getPaletteByType, monomerToShort} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
6
|
+
import {TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule/consts';
|
|
7
|
+
import {MonomerWorks} from '@datagrok-libraries/bio/src/monomer-works/monomer-works';
|
|
8
|
+
|
|
9
|
+
import {getMonomerLibHelper} from '../package';
|
|
10
|
+
import * as C from './constants';
|
|
11
|
+
|
|
12
|
+
const Tags = new class {
|
|
13
|
+
tooltipHandlerTemp = 'tooltip-handler.Monomer';
|
|
14
|
+
}();
|
|
15
|
+
|
|
16
|
+
const svgMolOptions = {autoCrop: true, autoCropMargin: 0, suppressChiralText: true};
|
|
17
|
+
|
|
18
|
+
export class MonomerTooltipHandler {
|
|
19
|
+
private readonly grid: DG.Grid;
|
|
20
|
+
|
|
21
|
+
constructor(grid: DG.Grid) {
|
|
22
|
+
this.grid = grid;
|
|
23
|
+
this.grid.onCellTooltip(this.onCellTooltip.bind(this));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private onCellTooltip(gridCell: DG.GridCell, x: number, y: number): any {
|
|
27
|
+
if (gridCell.grid.dart != this.grid.dart || !gridCell.tableColumn || !gridCell.isTableCell ||
|
|
28
|
+
gridCell.tableColumn.semType != 'Monomer') return false;
|
|
29
|
+
|
|
30
|
+
const alphabet = gridCell.tableColumn.getTag(bioTAGS.alphabet);
|
|
31
|
+
const monomerName = gridCell.cell.value;
|
|
32
|
+
const mw = new MonomerWorks(getMonomerLibHelper().getBioLib());
|
|
33
|
+
const monomerType: string = (alphabet === ALPHABET.DNA || alphabet === ALPHABET.RNA) ? 'RNA' :
|
|
34
|
+
alphabet === ALPHABET.PT ? 'PEPTIDE' : 'PEPTIDE';
|
|
35
|
+
|
|
36
|
+
const monomerMol: string | null = mw.getCappedRotatedMonomer(monomerType, monomerName);
|
|
37
|
+
const nameDiv = ui.div(monomerName);
|
|
38
|
+
const molDiv = !monomerMol ? null :
|
|
39
|
+
grok.chem.svgMol(monomerMol, undefined, undefined, svgMolOptions);
|
|
40
|
+
|
|
41
|
+
const canvasClientRect = gridCell.grid.canvas.getBoundingClientRect();
|
|
42
|
+
const x1 = gridCell.bounds.right + canvasClientRect.left - 4;
|
|
43
|
+
const y1 = gridCell.bounds.bottom + canvasClientRect.top - 4;
|
|
44
|
+
ui.tooltip.show(ui.divV([nameDiv, ...(molDiv ? [molDiv] : [])]), x1, y1);
|
|
45
|
+
|
|
46
|
+
return true; // To prevent default tooltip behaviour
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public static getOrCreate(grid: DG.Grid): MonomerTooltipHandler {
|
|
50
|
+
const gridTemp: { [tempName: string]: any } = grid.dataFrame.temp;
|
|
51
|
+
if (!(Tags.tooltipHandlerTemp in gridTemp)) {
|
|
52
|
+
gridTemp[Tags.tooltipHandlerTemp] = new MonomerTooltipHandler(grid);
|
|
53
|
+
grid.temp = gridTemp;
|
|
54
|
+
}
|
|
55
|
+
return gridTemp[Tags.tooltipHandlerTemp];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export class MonomerCellRenderer extends DG.GridCellRenderer {
|
|
60
|
+
get name(): string { return C.SEM_TYPES.MONOMER; }
|
|
61
|
+
|
|
62
|
+
get cellType(): string { return C.SEM_TYPES.MONOMER; }
|
|
63
|
+
|
|
64
|
+
get defaultHeight(): number { return 15; }
|
|
65
|
+
|
|
66
|
+
get defaultWidth(): number { return 30; }
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Cell renderer function.
|
|
70
|
+
*
|
|
71
|
+
* @param {CanvasRenderingContext2D} g Canvas rendering context.
|
|
72
|
+
* @param {number} x x coordinate on the canvas.
|
|
73
|
+
* @param {number} y y coordinate on the canvas.
|
|
74
|
+
* @param {number} w width of the cell.
|
|
75
|
+
* @param {number} h height of the cell.
|
|
76
|
+
* @param {DG.GridCell} gridCell Grid cell.
|
|
77
|
+
* @param {DG.GridCellStyle} _cellStyle Cell style.
|
|
78
|
+
*/
|
|
79
|
+
render(
|
|
80
|
+
g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, gridCell: DG.GridCell,
|
|
81
|
+
_cellStyle: DG.GridCellStyle
|
|
82
|
+
): void {
|
|
83
|
+
if (gridCell.gridRow < 0) return;
|
|
84
|
+
MonomerTooltipHandler.getOrCreate(gridCell.grid);
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
g.font = `12px monospace`;
|
|
88
|
+
g.textBaseline = 'middle';
|
|
89
|
+
g.textAlign = 'center';
|
|
90
|
+
|
|
91
|
+
const palette = getPaletteByType(gridCell.cell.column.getTag(bioTAGS.alphabet));
|
|
92
|
+
const s: string = gridCell.cell.value;
|
|
93
|
+
if (!s)
|
|
94
|
+
return;
|
|
95
|
+
const color = palette.get(s);
|
|
96
|
+
|
|
97
|
+
g.fillStyle = color;
|
|
98
|
+
g.fillText(monomerToShort(s, 3), x + (w / 2), y + (h / 2), w);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {delay} from '@datagrok-libraries/utils/src/test';
|
|
2
|
+
import {checkInputColumnUI} from './check-input-column';
|
|
3
|
+
import {splitAlignedSequences} from '@datagrok-libraries/bio/src/utils/splitter';
|
|
4
|
+
import * as C from './constants';
|
|
5
|
+
import {TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule/consts';
|
|
6
|
+
import * as grok from 'datagrok-api/grok';
|
|
7
|
+
import * as DG from 'datagrok-api/dg';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export async function splitToMonomersUI(table: DG.DataFrame, seqCol: DG.Column<string>): Promise<DG.DataFrame> {
|
|
11
|
+
// Delay is required for initial function dialog to close before starting invalidating of molfiles.
|
|
12
|
+
// Otherwise, dialog is freezing
|
|
13
|
+
await delay(10);
|
|
14
|
+
if (!checkInputColumnUI(seqCol, 'Sequence space')) return table;
|
|
15
|
+
|
|
16
|
+
const tempDf = splitAlignedSequences(seqCol);
|
|
17
|
+
const originalDf = seqCol.dataFrame;
|
|
18
|
+
for (const tempCol of tempDf.columns) {
|
|
19
|
+
// TODO: GROK-11212
|
|
20
|
+
// tempCol.setTag(DG.TAGS.CELL_RENDERER, C.SEM_TYPES.MONOMER);
|
|
21
|
+
tempCol.semType = C.SEM_TYPES.MONOMER;
|
|
22
|
+
tempCol.setTag(bioTAGS.alphabet, seqCol.getTag(bioTAGS.alphabet));
|
|
23
|
+
}
|
|
24
|
+
// Create the new data frame to enable platform to setup cell renderers
|
|
25
|
+
const newDf = originalDf.join(tempDf, [], [], undefined, undefined, DG.JOIN_TYPE.LEFT, false);
|
|
26
|
+
grok.shell.addTableView(newDf);
|
|
27
|
+
|
|
28
|
+
return newDf;
|
|
29
|
+
}
|