/* eslint-disable max-len */ import * as DG from 'datagrok-api/dg'; import * as grok from 'datagrok-api/grok'; import * as ui from 'datagrok-api/ui'; import {_package} from '../package'; import {adjustGridcolAfterRender} from '../utils/ui-utils'; import {buildMonomerHoverLink} from '@datagrok-libraries/bio/src/monomer-works/monomer-hover'; import {ChemTags} from '@datagrok-libraries/chem-meta/src/consts'; export async function antibodyDemo() { // for some reason the col is not saved in the layout const antibodyTags = [ [ 'units', 'fasta' ], [ 'aligned', 'SEQ.MSA' ], [ 'alphabet', 'PT' ], [ 'cell.renderer', 'sequence' ], [ 'quality', 'Macromolecule' ], [ '.semantic-detection-duration', '8' ], [ '.annotations', '[{"id":"deamid-ng","name":"Deamidation (NG)","description":"deamidation liability pattern (111 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#E53935","severity":"high","motifPattern":"NG","autoGenerated":true},{"id":"deamid-ns","name":"Deamidation (NS)","description":"deamidation liability pattern (859 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#E53935","severity":"medium","motifPattern":"NS","autoGenerated":true},{"id":"deamid-na","name":"Deamidation (NA)","description":"deamidation liability pattern (69 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#E53935","severity":"low","motifPattern":"NA","autoGenerated":true},{"id":"deamid-nd","name":"Deamidation (ND)","description":"deamidation liability pattern (18 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#E53935","severity":"low","motifPattern":"ND","autoGenerated":true},{"id":"deamid-nt","name":"Deamidation (NT)","description":"deamidation liability pattern (546 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#E53935","severity":"low","motifPattern":"NT","autoGenerated":true},{"id":"isom-dg","name":"Isomerization (DG)","description":"isomerization liability pattern (118 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#FF9800","severity":"high","motifPattern":"DG","autoGenerated":true},{"id":"isom-ds","name":"Isomerization (DS)","description":"isomerization liability pattern (306 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#FF9800","severity":"medium","motifPattern":"DS","autoGenerated":true},{"id":"oxid-m","name":"Oxidation (Met)","description":"oxidation liability pattern (1220 hits)","start":null,"end":null,"visualType":"point","category":"liability","color":"#9C27B0","severity":"medium","motifPattern":"M","autoGenerated":true},{"id":"oxid-w","name":"Oxidation (Trp)","description":"oxidation liability pattern (2593 hits)","start":null,"end":null,"visualType":"point","category":"liability","color":"#9C27B0","severity":"low","motifPattern":"W","autoGenerated":true},{"id":"glyco-nxst","name":"N-glycosylation","description":"glycosylation liability pattern (38 hits)","start":null,"end":null,"visualType":"motif","category":"liability","color":"#4CAF50","severity":"high","motifPattern":"N[^P][ST]","autoGenerated":true},{"id":"free-cys","name":"Free Cysteine","description":"freeCysteine liability pattern (2327 hits)","start":null,"end":null,"visualType":"point","category":"liability","color":"#607D8B","severity":"info","motifPattern":"C","autoGenerated":true},{"id":"kabat-heavy-fr1","name":"FR1","description":"FR1 (KABAT 1-30)","start":"1","end":"30","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-cdr1","name":"CDR1","description":"CDR1 (KABAT 31-35)","start":"31","end":"35","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-fr2","name":"FR2","description":"FR2 (KABAT 36-49)","start":"36","end":"49","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-cdr2","name":"CDR2","description":"CDR2 (KABAT 50-65)","start":"50","end":"65","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-fr3","name":"FR3","description":"FR3 (KABAT 66-94)","start":"66","end":"94","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-cdr3","name":"CDR3","description":"CDR3 (KABAT 95-102)","start":"95","end":"102","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true},{"id":"kabat-heavy-fr4","name":"FR4","description":"FR4 (KABAT 103-113)","start":"103","end":"113","visualType":"region","category":"structure","sourceScheme":"KABAT","autoGenerated":true}]' ], [ '.annotationColumnName', '~AntibodyHC_annotations' ], [ '.id', '750dcca0-48b0-11f1-e663-211b32f9e20c' ], [ '.numberingScheme', 'kabat' ], [ '.regions', '[{"name":"FR1","description":"FR1 (KABAT 1-30)","start":"1","end":"30"},{"name":"CDR1","description":"CDR1 (KABAT 31-35)","start":"31","end":"35"},{"name":"FR2","description":"FR2 (KABAT 36-49)","start":"36","end":"49"},{"name":"CDR2","description":"CDR2 (KABAT 50-65)","start":"50","end":"65"},{"name":"FR3","description":"FR3 (KABAT 66-94)","start":"66","end":"94"},{"name":"CDR3","description":"CDR3 (KABAT 95-102)","start":"95","end":"102"},{"name":"FR4","description":"FR4 (KABAT 103-113)","start":"103","end":"113"}]' ], [ '.positionShift', '42.10943057774151' ] ]; const df = await _package.files.readCsv('demo-files/Antibody_HC.csv'); const orCol = df.col('AntibodyHC')!; antibodyTags.forEach(([k, v]) => orCol.setTag(k, v)); const clustCol = df.col('cluster (dbscan)')!; const stCol = clustCol.convertTo(DG.TYPE.STRING); df.columns.remove(clustCol.name); df.columns.add(stCol); const layoutTXT = await _package.files.readAsText('demo-files/Antibody_HC.layout'); const layout = DG.ViewLayout.fromJson(layoutTXT); layout.columns.forEach((c) => { const col = df.col(c.name); if (col) Object.entries(c.tags).forEach(([k, v]) => col.setTag(k, v)); }); const tv = grok.shell.addTableView(df); await DG.delay(100); tv.loadLayout(layout, true); } export async function atomicLevelDemo() { const df = await _package.files.readCsv('demo-files/Atomic_Level.csv'); await df.meta.detectSemanticTypes(); const tv = grok.shell.addTableView(df); await DG.delay(100); await buildMonomerHoverLink(df.col('helm')!, df.col('molfile(helm)')!, _package.monomerLib, _package.seqHelper, _package.rdKitModule, true); adjustGridcolAfterRender(tv.grid, 'molfile(HELM)', 500, 300, true); adjustGridcolAfterRender(tv.grid, 'HELM', 500, undefined, true); df.col('molfile(helm)')!.setTag(ChemTags.SEQUENCE_SRC_HL_MONOMERS, 'false'); df.col('molfile(helm)')!.setTag(ChemTags.SEQUENCE_SRC_COL, 'HELM'); grok.shell.info('Hover over monomers in HELM column to highlight them in molecular structure.', {timeout: 10}); } export async function sirnaDemo() { const df = await _package.files.readCsv('demo-files/SIRNA.csv'); const layoutTXT = await _package.files.readAsText('demo-files/SIRNA.layout'); const layout = DG.ViewLayout.fromJson(layoutTXT); df.col('sense_seq')!.setTag('aligned', 'SEQ.MSA'); df.col('antisense_seq')!.setTag('aligned', 'SEQ.MSA'); const tv = grok.shell.addTableView(df); await DG.delay(100); tv.loadLayout(layout, true); await df.meta.detectSemanticTypes(); grok.shell.info('Hover over the oligo structrues to see modifications to different sugars, linkers and residues.', {timeout: 10}); setTimeout(() => { df.currentCell = df.cell(0, 'oligo_helm'); }, 300); }