@datagrok/bio 2.27.7 → 2.27.9
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/CLAUDE.md +77 -12
- package/CREDITS.md +246 -0
- package/dist/package-test.js +2 -2
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/files/demo-files/Antibody_HC.csv +494 -0
- package/files/demo-files/Antibody_HC.layout +516 -0
- package/files/demo-files/Atomic_Level.csv +4030 -0
- package/files/demo-files/SIRNA.csv +66018 -0
- package/files/demo-files/SIRNA.layout +2784 -0
- package/files/demo-files/bio_similarity_diversity.layout +205 -0
- package/files/tests/to-atomic-level-dna-fasta-output.csv +7152 -7152
- package/package.json +2 -2
- package/projects/bio_demo_activity_cliffs.zip +0 -0
- package/src/demo/bio01-similarity-diversity.ts +10 -0
- package/src/demo/bio01a-hierarchical-clustering-and-sequence-space.ts +0 -1
- package/src/demo/bio01b-hierarchical-clustering-and-activity-cliffs.ts +25 -0
- package/src/demo/bio03-atomic-level.ts +0 -14
- package/src/demo/feature_demos.ts +103 -0
- package/src/package-api.ts +14 -0
- package/src/package.g.ts +16 -0
- package/src/package.ts +28 -8
- package/src/tests/to-atomic-level-tests.ts +507 -155
- package/test-console-output-1.log +548 -647
- package/test-record-1.mp4 +0 -0
package/CLAUDE.md
CHANGED
|
@@ -46,17 +46,18 @@ Other packages depend on these implementations: **Helm**, **Peptides**, **Biostr
|
|
|
46
46
|
| `Bio \| Analyze \| Activity Cliffs...` | `activityCliffs` | Detects sequence pairs with similar structure but significant activity difference |
|
|
47
47
|
| `Bio \| Analyze \| Sequence Space...` | `sequenceSpaceTopMenu` | UMAP/tSNE 2D projection of sequences by pairwise distance |
|
|
48
48
|
| `Bio \| Analyze \| MSA...` | `multipleSequenceAlignmentDialog` | Multiple sequence alignment via kalign (WASM) for canonical sequences, or dynamically discovered engines (e.g. PepSeA Docker) for non-canonical |
|
|
49
|
+
| `Bio \| Analyze \| Compare sequences...` | `compareSequencesTopMenu` | Pairs two macromolecule columns and produces an alignment-difference column |
|
|
49
50
|
| `Bio \| Analyze \| Composition` | `compositionAnalysis` | Docks a WebLogo viewer for sequence composition |
|
|
50
51
|
| `Bio \| Transform \| Convert Sequence Notation...` | `convertDialog` | FASTA ↔ SEPARATOR ↔ HELM ↔ BILN conversion |
|
|
51
52
|
| `Bio \| Transform \| To Atomic Level...` | `toAtomicLevel` | Converts sequences to V3000 molfiles |
|
|
52
53
|
| `Bio \| Transform \| Split to Monomers...` | `splitToMonomersTopMenu` | Splits aligned sequences into per-position columns |
|
|
53
54
|
| `Bio \| Transform \| Molecules to HELM...` | `moleculesToHelmTopMenu` | Converts peptide molecules to HELM via Python script |
|
|
54
|
-
| `Bio \| Calculate \|
|
|
55
|
+
| `Bio \| Calculate \| Extract Region...` | `getRegionTopMenu` | Extracts sub-region from macromolecule column |
|
|
55
56
|
| `Bio \| Calculate \| Identity...` | `sequenceIdentityScoring` | Fraction of matching monomers vs reference |
|
|
56
57
|
| `Bio \| Calculate \| Similarity...` | `sequenceSimilarityScoring` | Sum of monomer fingerprint similarities vs reference |
|
|
57
58
|
| `Bio \| Search \| Similarity Search` | `similaritySearchTopMenu` | K-nearest neighbor sequence search |
|
|
58
59
|
| `Bio \| Search \| Diversity Search` | `diversitySearchTopMenu` | Maximally diverse subset selection |
|
|
59
|
-
| `Bio \| Search \| Subsequence Search...` | `SubsequenceSearchTopMenu` | Substructure filter (regex or RDKit) |
|
|
60
|
+
| `Bio \| Search \| Subsequence Search ...` | `SubsequenceSearchTopMenu` | Substructure filter (regex or RDKit) |
|
|
60
61
|
| `Bio \| Manage \| Monomer Libraries` | `manageLibrariesView` | Full monomer library management UI |
|
|
61
62
|
| `Bio \| Manage \| Monomers` | `manageMonomersView` | Individual monomer CRUD editor |
|
|
62
63
|
| `Bio \| Manage \| Match with Monomer Library...` | `matchWithMonomerLibrary` | Matches molecules to library monomers |
|
|
@@ -88,6 +89,21 @@ Other packages depend on these implementations: **Helm**, **Peptides**, **Biostr
|
|
|
88
89
|
- `importFasta` — opens `.fasta`, `.fna`, `.fa`, etc. files
|
|
89
90
|
- `importBam` — stub for BAM files
|
|
90
91
|
|
|
92
|
+
**Property Panels (additional, undocumented above):**
|
|
93
|
+
- `Monomer` info panel — `getMonomerInfoWidget()` from `src/widgets/monomer-info-widget.ts` (renders monomer details for `Monomer` semtype cells)
|
|
94
|
+
- `Bioinformatics | Manage Monomer Libraries` — link/widget pair surfaced as a column-level panel and as `Manage Monomer Libraries` (panel) for in-place library management
|
|
95
|
+
|
|
96
|
+
**Apps & extra registrations:**
|
|
97
|
+
- `Monomer Manager Tree Browser` — tree-grouped monomer browser app
|
|
98
|
+
- `Monomer Collections` — application for managing curated monomer-set collections (backed by `src/utils/monomer-lib/monomer-collections-view.ts` + `monomer-collection-handler.ts`)
|
|
99
|
+
- `Molecule to HELM Single` — single-molecule peptide → HELM converter (single-row companion to `Molecules to HELM...`)
|
|
100
|
+
- `SDF to JSON Library` — converts an SDF table into a HELM JSON monomer library
|
|
101
|
+
- `seqIdentity` — column-vs-reference identity score function
|
|
102
|
+
|
|
103
|
+
**Transforms (DG.Func internal API for analysis pipelines):**
|
|
104
|
+
- `seqActivityCliffsTransform`, `seqActivityCliffsInitFunction` — replay-friendly wrappers around Activity Cliffs
|
|
105
|
+
- `sequenceSpaceTransform` — replay wrapper around Sequence Space
|
|
106
|
+
|
|
91
107
|
**Other:**
|
|
92
108
|
- `bioSubstructureFilter` — macromolecule substructure filter
|
|
93
109
|
- `saveAsFasta` — file exporter (As FASTA...)
|
|
@@ -152,6 +168,7 @@ Key methods: `detectSeparator()`, `detectAlphabet()`, `getAlphabetSimilarity()`,
|
|
|
152
168
|
| `representations.ts` | `getMacromoleculeColumnPropertyPanel()` — UI for renderer settings: font size, max monomer length, gap length, color coding scheme, reference sequence, multiline mode |
|
|
153
169
|
| `to-atomic-level-widget.ts` | `toAtomicLevelSingle()` (seq→molfile), `toAtomicLevelWidget()` (2D molecule drawing), `molecular3DStructureWidget()` (3D NGL viewer) |
|
|
154
170
|
| `sequence-scrolling-widget.ts` | `handleSequenceHeaderRendering()` — MSA column header with WebLogo + conservation tracks, viewport-aware lazy caching (50-position chunks), click to dock position statistics viewer |
|
|
171
|
+
| `monomer-info-widget.ts` | `getMonomerInfoWidget()` — info-panel widget for `Monomer` semtype cells; renders the monomer card with structure, library origin and R-group info |
|
|
155
172
|
| `package-settings-editor-widget.ts` | `PackageSettingsEditorWidget` — Bio package global settings form |
|
|
156
173
|
|
|
157
174
|
### Utilities (`src/utils/`)
|
|
@@ -165,13 +182,18 @@ Key methods: `detectSeparator()`, `detectAlphabet()`, `getAlphabetSimilarity()`,
|
|
|
165
182
|
| `monomer-cell-renderer-base.ts` | `MonomerCellRendererBase` — abstract base that async-loads monomer library, invalidates grid on lib change |
|
|
166
183
|
| `convert.ts` | `convert()` — dialog for notation conversion (FASTA ↔ SEPARATOR ↔ HELM ↔ BILN). `convertDo()` performs actual conversion via `ISeqHandler`. |
|
|
167
184
|
| `get-region.ts` | `getRegionDo()` — extracts positional sub-region from macromolecule column via `ISeqHandler.getRegion()` |
|
|
168
|
-
| `
|
|
185
|
+
| `get-region-func-editor.ts` | Custom function-editor UI for the `getRegion` DG function (allows interactive position-range selection) |
|
|
186
|
+
| `split-to-monomers.ts` | `splitToMonomersUI()` — splits aligned sequences into per-position `Monomer` columns using `splitAlignedSequences` |
|
|
169
187
|
| `sequence-to-mol.ts` | `sequenceToMolfile()` — converts macromolecule column to atomic-level molfile column (linear via `_toAtomicLevel`, nonlinear via HELM converter) |
|
|
170
188
|
| `calculate-scores.ts` | `calculateScoresWithEmptyValues()` — wraps `calculateIdentityScoring`/`calculateChemSimilarityScoring` from bio lib, handles empty values |
|
|
171
189
|
| `save-as-fasta.ts` | `saveAsFastaUI()` — dialog + download for FASTA export. `buildFasta()` builds the string. |
|
|
172
190
|
| `biln.ts` | `BilnNotationProvider` — notation provider for BILN sequences with splitter, HELM converter, cell renderer back-end |
|
|
191
|
+
| `compare-sequences.ts` | Backs `Bio | Analyze | Compare sequences...` — pairs two macromolecule columns (column picker + reference column), produces an alignment-difference column rendered with `MacromoleculeDifferenceCellRenderer` |
|
|
173
192
|
| `context-menu.ts` | `addCopyMenuUI()` — adds "Copy as FASTA/SEPARATOR/HELM/BILN" to cell context menu |
|
|
174
193
|
| `check-input-column.ts` | `checkInputColumnUI()` / `checkInputColumn()` — validates column has `Macromolecule` semtype |
|
|
194
|
+
| `detect-macromolecule-probe.ts` | Adjustable detector probe — exposes the macromolecule detector under a tunable threshold for development/testing |
|
|
195
|
+
| `macromolecule-column-widget.ts` | Column-level widget (panel) summarising a macromolecule column (notation, alphabet, monomer histogram, etc.) |
|
|
196
|
+
| `sequence-column-input.ts` | Wraps `createSequenceColumnInput()` from the bio library into a Bio-package-friendly DG input variant |
|
|
175
197
|
| `ui-utils.ts` | `getMacromoleculeColumns()`, `safeReplace()`, `setGridColWidth()` |
|
|
176
198
|
| `types.ts` | Shared types: `DfPair`, `ActivityCliffsData`, `MsaOptions` (kalign/pepsea params), `AARDict` |
|
|
177
199
|
| `constants.ts` | Constants: `SEM_TYPES`, `PEPSEA_VERSION`, `DEFAULT_MSA_PARAMETERS`, amino acid groupings |
|
|
@@ -225,7 +247,20 @@ See `pepseaMsa()` in `package.ts` and `alignWithPepsea()` in `pepsea.ts` for a c
|
|
|
225
247
|
| `utils/antibody-numbering/immunum-glue.js` | Browser/worker-safe port of `node_modules/immunum/immunum.js`. Byte-identical wasm-bindgen glue — only the Node-only `require('fs').readFileSync` top-level loader is replaced with an explicit `initImmunum(bytes)` entry point. |
|
|
226
248
|
| `utils/antibody-numbering/types.ts` | `ImmunumNumberingRow`, `ImmunumWorkerRequest`/`ImmunumWorkerResponse`, `IMMUNUM_SCHEMES`. |
|
|
227
249
|
|
|
228
|
-
|
|
250
|
+
#### Sequence Annotations & Liabilities (`utils/annotations/`)
|
|
251
|
+
|
|
252
|
+
| File | Purpose |
|
|
253
|
+
|---|---|
|
|
254
|
+
| `annotation-manager.ts` | `AnnotationManager` — model layer. Owns the per-column annotation list, persists to/from the column's `.annotations` tag (JSON `SeqAnnotation[]`), exposes add/update/remove + change observable for UI re-renders |
|
|
255
|
+
| `annotation-manager-ui.ts` | `showAnnotationManagerDialog()` — UI for viewing/editing the annotations on a macromolecule column (region, motif, liability entries) |
|
|
256
|
+
| `annotation-actions.ts` | Toolbar/context-menu actions that hook annotation creation off cell selection or position ranges |
|
|
257
|
+
| `liability-scanner.ts` | `scanLiabilitiesOnColumn()` — scans macromolecule sequences for sequence-liability motifs (deamidation, oxidation, glycosylation, etc.); records hits as `SeqAnnotation`s with `LiabilitySeverity` |
|
|
258
|
+
| `liability-scanner-ui.ts` | `showLiabilityScannerDialog()` — backs `Bio | Annotate | Scan Liabilities...`. Picks rule sets and writes results back via `AnnotationManager` |
|
|
259
|
+
| `numbering-ui.ts` | (described above under Antibody Numbering) |
|
|
260
|
+
|
|
261
|
+
Annotations rendered in the grid are drawn by `AnnotationRenderer` (`@datagrok-libraries/bio/src/utils/cell-renderer-annotations.ts`) on top of the standard macromolecule renderer; in the MSA scrolling header they appear via `AnnotationTrack` (`@datagrok-libraries/bio/src/utils/annotation-track.ts`).
|
|
262
|
+
|
|
263
|
+
**Expected output shape (per antpack/AntPack convention, see `utils/antibody-numbering/number-antibody.ts`):**
|
|
229
264
|
|
|
230
265
|
A `DG.DataFrame` with 5 string columns, one row per input sequence:
|
|
231
266
|
|
|
@@ -254,13 +289,24 @@ Reference implementation: `immunumAntibodyNumbering()` in `package.ts` and `numb
|
|
|
254
289
|
|
|
255
290
|
Existing engines:
|
|
256
291
|
- **Bio** — `immunumAntibodyNumbering` (WASM, in-worker, IMGT/Kabat only — advertised via the `scheme` param's `choices`)
|
|
257
|
-
- **
|
|
292
|
+
- **AntPack reference** — historical Python reference for the expected DataFrame shape (5 columns: `position_names`, `chain_type`, `annotations_json`, `numbering_detail`, `numbering_map`). Not currently shipped in `scripts/`; the same shape is asserted by `utils/antibody-numbering/number-antibody.ts` and the `antibody-numbering-tests.ts` test suite
|
|
293
|
+
|
|
294
|
+
#### Annotations — `src/utils/annotations/`
|
|
295
|
+
|
|
296
|
+
| File | Purpose |
|
|
297
|
+
|---|---|
|
|
298
|
+
| `numbering-ui.ts` | `showNumberingSchemeDialog()` — generic dialog that discovers `meta.role: 'antibodyNumbering'` engines, populates the scheme dropdown from the chosen engine's `scheme` param `choices`, runs the engine, and applies its result (annotations + aligned column). See "Adding a New Antibody Numbering Engine" |
|
|
299
|
+
| `annotation-manager.ts` | `AnnotationManager` — owns the per-column `RowAnnotationData[]`, persists to a column tag, fires events when annotations change. Backbone for the `manageAnnotations` UI |
|
|
300
|
+
| `annotation-manager-ui.ts` | UI for `Bio | Annotate | Manage Annotations...` — table + buttons for creating / editing / removing per-row annotations |
|
|
301
|
+
| `annotation-actions.ts` | Annotation actions registry — bulk operations (clear, copy from another column, etc.) and the right-click action set wired into the cell renderer |
|
|
302
|
+
| `liability-scanner.ts` | Liability rules engine — scans macromolecule sequences for chemistry liabilities (deamidation `NG`, oxidation `M`, …) and emits `SeqAnnotationHit[]` keyed by `LiabilitySeverity` |
|
|
303
|
+
| `liability-scanner-ui.ts` | `Bio | Annotate | Scan Liabilities...` dialog — selects target column, runs the scanner, writes results into the `AnnotationManager` |
|
|
258
304
|
|
|
259
305
|
#### Seq Helper — `src/utils/seq-helper/`
|
|
260
306
|
|
|
261
307
|
| File | Purpose |
|
|
262
308
|
|---|---|
|
|
263
|
-
| `seq-helper.ts` | `SeqHelper` (implements `ISeqHelper`) — central facade for sequence operations: `getSeqHandler()`, `getSeqMonomers()`, `
|
|
309
|
+
| `seq-helper.ts` | `SeqHelper` (implements `ISeqHelper`) — central facade for sequence operations: `helmToAtomicLevel()` / `helmToAtomicLevelSingle()` (HELM column / single-row → V3K molfile), `getSeqHandler()`, `getSeqMonomers()`, `setUnitsToFastaColumn()` / `setUnitsToSeparatorColumn()` / `setUnitsToHelmColumn()`, `getHelmToMolfileConverter()` |
|
|
264
310
|
| `seq-handler.ts` | `SeqHandler` (implements `ISeqHandler`) — per-column handler for splitting, notation conversion (FASTA/SEP/HELM/BILN), region extraction, stats, alphabet detection. Contains joiner functions. |
|
|
265
311
|
| `index.ts` | Barrel re-export of `SeqHelper` |
|
|
266
312
|
|
|
@@ -272,6 +318,8 @@ Existing engines:
|
|
|
272
318
|
| `monomer-lib.ts` | `MonomerLib` (extends `MonomerLibBase`, implements `IMonomerLib`) — merged library from multiple sources. Handles duplicate tracking, user duplicate preferences, summary stats. |
|
|
273
319
|
| `monomer-lib-base.ts` | `MonomerLibBase` — base implementation: monomer lookup, symbol listing, missing monomer creation, R-group extraction from SMILES, tooltip rendering, color computation with contrast logic |
|
|
274
320
|
| `monomer-colors.ts` | Static color mappings for natural monomers (nucleotide chromatogram palette, amino acid GrokGroups palette) |
|
|
321
|
+
| `monomer-collection-handler.ts` | Backs the `Monomer Collections` app — manages curated subsets of monomers (collection CRUD, persistence to AppData) |
|
|
322
|
+
| `monomer-collections-view.ts` | View for browsing / editing monomer collections; loads from `files/monomer-collections/` JSON files |
|
|
275
323
|
| `consts.ts` | Test constants: `LIB_SETTINGS_FOR_TESTS`, `LIB_MONOMER_COUNTS` |
|
|
276
324
|
| `smiles2Monomer.ts` | `smiles2Monomer()` — converts inline SMILES (CX-SMILES with R-group labels) to `Monomer` objects with auto-derived R-groups |
|
|
277
325
|
| `web-editor-monomer-dummy.ts` | Placeholder `WebEditorMonomer` implementations (inline SMILES, gap, ambiguous, missing, broken) |
|
|
@@ -282,16 +330,18 @@ Existing engines:
|
|
|
282
330
|
| File | Purpose |
|
|
283
331
|
|---|---|
|
|
284
332
|
| `ui.ts` | UI for library management: `showManageLibrariesDialog()` (checkbox per library with edit/delete), `showManageLibrariesView()` (full view with duplicate manager), `getMonomerLibraryManagerLink()` (panel widget) |
|
|
285
|
-
| `
|
|
286
|
-
| `validator` | AJV-based JSON schema validation for monomer library files |
|
|
333
|
+
| `monomers-lib-provider.ts` | `MonomerLibFromFilesProvider` — reads/writes monomer library JSON files from `System:AppData/Bio/` file shares. CRUD operations, HELM JSON schema validation |
|
|
334
|
+
| `file-validator.ts` | AJV-based JSON schema validation for monomer library files |
|
|
335
|
+
| `style.css` | Library manager styles |
|
|
287
336
|
|
|
288
337
|
##### Monomer Manager — `src/utils/monomer-lib/monomer-manager/`
|
|
289
338
|
|
|
290
339
|
| File | Purpose |
|
|
291
340
|
|---|---|
|
|
292
|
-
| `monomer-manager.ts` | `MonomerManager` — full CRUD UI for monomers within a library. Grid view with context menus, create/edit dialog with SMILES↔molfile standardization
|
|
293
|
-
| `duplicate-manager.ts` | `
|
|
294
|
-
| `
|
|
341
|
+
| `monomer-manager.ts` | `MonomerManager` — full CRUD UI for monomers within a library. Grid view with context menus, create/edit dialog with SMILES↔molfile standardization, `standardizeMonomerLibrary()` library JSON normaliser |
|
|
342
|
+
| `duplicate-monomer-manager.ts` | `DuplicateMonomerManager` — UI for resolving duplicate monomer conflicts across libraries. Monomer cards grouped by symbol, user picks preferred source |
|
|
343
|
+
| `match-molecules.ts` | `matchMoleculesWithMonomers()` — matches molecules in a column against monomers from the selected libraries by canonical SMILES (used by `Bio | Manage | Match with Monomer Library...`) |
|
|
344
|
+
| `const.ts` | Constants used by the monomer manager UI (column-name conventions, default R-group definitions) |
|
|
295
345
|
|
|
296
346
|
#### HELM to Molfile — `src/utils/helm-to-molfile/`
|
|
297
347
|
|
|
@@ -374,6 +424,11 @@ Test entry point: `src/package-test.ts` — imports all test files, exports `tes
|
|
|
374
424
|
| `biln-tests.ts` | BILN notation |
|
|
375
425
|
| `mm-distance-tests.ts` | Macromolecule distance functions |
|
|
376
426
|
| `checkInputColumn-tests.ts` | Input validation |
|
|
427
|
+
| `projects-tests.ts` | DG project save/restore round-trip for macromolecule columns |
|
|
428
|
+
| `activity-cliffs-utils.ts` | Shared helpers used by `activity-cliffs-tests.ts` (no `test()` blocks) |
|
|
429
|
+
| `sequence-space-utils.ts` | Shared helpers used by `sequence-space-test.ts` |
|
|
430
|
+
| `types.ts`, `utils.ts` | Test-suite shared types and helpers (fixture loading, dataframe builders, expectation utilities) |
|
|
431
|
+
| `utils/detectors-utils.ts`, `utils/sequences-generators.ts`, `utils/test-logger.ts` | Detector probe + synthetic-sequence generators + structured test logging |
|
|
377
432
|
|
|
378
433
|
## Initialization Flow
|
|
379
434
|
|
|
@@ -400,10 +455,12 @@ Test entry point: `src/package-test.ts` — imports all test files, exports `tes
|
|
|
400
455
|
|
|
401
456
|
- `files/monomer-libraries/` — HELM monomer library JSON files (HELMCoreLibrary, polytool-lib, sample-lib)
|
|
402
457
|
- `files/monomer-sets/` — Monomer set definitions (PEPTIDE, RNA)
|
|
458
|
+
- `files/monomer-collections/` — Curated monomer collection JSON files (consumed by `Monomer Collections` app via `monomer-collection-handler.ts`)
|
|
403
459
|
- `files/samples/` — Sample data files for all notation types (FASTA, SEPARATOR, HELM, BILN, MSA)
|
|
404
460
|
- `files/tests/` — Test data files
|
|
405
461
|
- `files/schemas/` — JSON schemas for monomer sets
|
|
406
462
|
- `files/icons/` — Viewer icons
|
|
463
|
+
- `files/cache_config.json` — Per-function cache TTL/size configuration for the package
|
|
407
464
|
|
|
408
465
|
## Quick Lookups
|
|
409
466
|
|
|
@@ -432,7 +489,9 @@ Test entry point: `src/package-test.ts` — imports all test files, exports `tes
|
|
|
432
489
|
| Antibody numbering dialog | `src/utils/annotations/numbering-ui.ts` (`showNumberingSchemeDialog`) |
|
|
433
490
|
| Antibody numbering (immunum WASM in worker) | `src/utils/antibody-numbering/` (`immunum.worker.ts`, `immunum-client.ts`, `number-antibody.ts`, `immunum-glue.js`) |
|
|
434
491
|
| Adding antibody numbering engines | See "Adding a New Antibody Numbering Engine" in Antibody Numbering section |
|
|
492
|
+
| Annotation manager + liability scanner | `src/utils/annotations/` (`annotation-manager.ts`, `annotation-manager-ui.ts`, `liability-scanner.ts`, `liability-scanner-ui.ts`) |
|
|
435
493
|
| Notation conversion | `src/utils/convert.ts` |
|
|
494
|
+
| Compare two macromolecule columns | `src/utils/compare-sequences.ts` |
|
|
436
495
|
| Seq → molfile conversion | `src/utils/sequence-to-mol.ts` |
|
|
437
496
|
| HELM → molfile pipeline | `src/utils/helm-to-molfile/converter/` |
|
|
438
497
|
| FASTA import/export | `src/utils/save-as-fasta.ts` + bio lib `FastaFileHandler` |
|
|
@@ -440,7 +499,13 @@ Test entry point: `src/package-test.ts` — imports all test files, exports `tes
|
|
|
440
499
|
| BILN notation support | `src/utils/biln.ts` |
|
|
441
500
|
| MSA header with WebLogo | `src/widgets/sequence-scrolling-widget.ts` |
|
|
442
501
|
| Atomic level widgets | `src/widgets/to-atomic-level-widget.ts` |
|
|
502
|
+
| Monomer info panel | `src/widgets/monomer-info-widget.ts` |
|
|
503
|
+
| Macromolecule column property panel | `src/utils/macromolecule-column-widget.ts` |
|
|
504
|
+
| Detector probe (tunable) | `src/utils/detect-macromolecule-probe.ts` |
|
|
505
|
+
| Monomer Collections app | `src/utils/monomer-lib/monomer-collections-view.ts` + `monomer-collection-handler.ts` |
|
|
506
|
+
| Library file provider + validator | `src/utils/monomer-lib/library-file-manager/` (`monomers-lib-provider.ts`, `file-validator.ts`, `ui.ts`) |
|
|
507
|
+
| Match molecules → monomers | `src/utils/monomer-lib/monomer-manager/match-molecules.ts` |
|
|
443
508
|
| Demo scripts | `src/demo/` |
|
|
444
509
|
| Test entry point | `src/package-test.ts` |
|
|
445
510
|
| Auto-generated wrappers | `src/package.g.ts` / `src/package-api.ts` |
|
|
446
|
-
| Python scripts | `scripts/`
|
|
511
|
+
| Python/R scripts | `scripts/` — `mol-to-helm.py`, `sequence_generator.py` (+ `sequence_generator.md`), `embed.py`, `read-tree-pkl.py`, `generate_fasta_csv_for_alphabets.R` |
|
package/CREDITS.md
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Bio — Third-Party Libraries
|
|
2
|
+
|
|
3
|
+
The `@datagrok/bio` package is distributed under the MIT license that covers the
|
|
4
|
+
rest of the `public/` repository (see [`../../LICENSE.md`](../../LICENSE.md)). It
|
|
5
|
+
incorporates the open-source components listed below; this file reproduces the
|
|
6
|
+
attribution and notices required by their respective licenses.
|
|
7
|
+
|
|
8
|
+
All runtime JavaScript dependencies bundled into the published artifact are
|
|
9
|
+
under permissive licenses (MIT, Apache-2.0, BSD-3-Clause). No copyleft
|
|
10
|
+
(GPL/LGPL/MPL) component is bundled into the published Bio plugin.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Bundled in the published artifact (`dist/`)
|
|
15
|
+
|
|
16
|
+
### immunum (1.1.0)
|
|
17
|
+
|
|
18
|
+
ENPICOM's antibody/TCR numbering library, compiled to WebAssembly. The
|
|
19
|
+
WASM binary is bundled into `dist/`; the wasm-bindgen JS glue is reused from
|
|
20
|
+
[`src/utils/antibody-numbering/immunum-glue.js`](src/utils/antibody-numbering/immunum-glue.js),
|
|
21
|
+
which is a port of the upstream `node_modules/immunum/immunum.js` modified
|
|
22
|
+
only to replace the Node-only `require('fs').readFileSync` top-level loader
|
|
23
|
+
with an explicit `initImmunum(bytes)` entry point so it works in browsers and
|
|
24
|
+
web workers. The modification is noted in the file header per MIT terms.
|
|
25
|
+
|
|
26
|
+
- Upstream: https://github.com/ENPICOM/immunum — https://immunum.enpicom.com
|
|
27
|
+
- License: **MIT**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
MIT License
|
|
31
|
+
|
|
32
|
+
Copyright (c) 2026 ENPICOM
|
|
33
|
+
|
|
34
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
35
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
36
|
+
in the Software without restriction, including without limitation the rights
|
|
37
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
38
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
39
|
+
furnished to do so, subject to the following conditions:
|
|
40
|
+
|
|
41
|
+
The above copyright notice and this permission notice shall be included in all
|
|
42
|
+
copies or substantial portions of the Software.
|
|
43
|
+
|
|
44
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
45
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
46
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
47
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
48
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
49
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
50
|
+
SOFTWARE.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### @biowasm/aioli (3.x)
|
|
54
|
+
|
|
55
|
+
WebAssembly runtime that drives multiple sequence alignment (kalign). The
|
|
56
|
+
aioli library itself is bundled; the kalign tool it loads is fetched at
|
|
57
|
+
runtime — see Section 3 below.
|
|
58
|
+
|
|
59
|
+
- Upstream: https://github.com/biowasm/aioli
|
|
60
|
+
- License: **MIT**
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
MIT License
|
|
64
|
+
|
|
65
|
+
Copyright (c) 2018 Robert Aboukhalil
|
|
66
|
+
|
|
67
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
68
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
69
|
+
in the Software without restriction, including without limitation the rights
|
|
70
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
71
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
72
|
+
furnished to do so, subject to the following conditions:
|
|
73
|
+
|
|
74
|
+
The above copyright notice and this permission notice shall be included in all
|
|
75
|
+
copies or substantial portions of the Software.
|
|
76
|
+
|
|
77
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
78
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
79
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
80
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
81
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
82
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
83
|
+
SOFTWARE.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Ajv (8.x) and ajv-errors (3.x)
|
|
87
|
+
|
|
88
|
+
JSON-schema validator used for monomer-library JSON validation.
|
|
89
|
+
|
|
90
|
+
- Upstream: https://ajv.js.org/ — https://github.com/ajv-validator/ajv-errors
|
|
91
|
+
- License: **MIT**
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
The MIT License (MIT)
|
|
95
|
+
|
|
96
|
+
Copyright (c) 2015-2021 Evgeny Poberezkin
|
|
97
|
+
|
|
98
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
99
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
100
|
+
in the Software without restriction, including without limitation the rights
|
|
101
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
102
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
103
|
+
furnished to do so, subject to the following conditions:
|
|
104
|
+
|
|
105
|
+
The above copyright notice and this permission notice shall be included in all
|
|
106
|
+
copies or substantial portions of the Software.
|
|
107
|
+
|
|
108
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
109
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
110
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
111
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
112
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
113
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
114
|
+
SOFTWARE.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
(`ajv-errors` carries an analogous MIT notice — *Copyright (c) 2017 Evgeny
|
|
118
|
+
Poberezkin*.)
|
|
119
|
+
|
|
120
|
+
### fastest-levenshtein (1.0.x)
|
|
121
|
+
|
|
122
|
+
Levenshtein-distance implementation used in sequence comparison code paths.
|
|
123
|
+
|
|
124
|
+
- Upstream: https://github.com/ka-weihe/fastest-levenshtein
|
|
125
|
+
- License: **MIT**
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
MIT License
|
|
129
|
+
|
|
130
|
+
Copyright (c) 2020 Kasper Unn Weihe
|
|
131
|
+
|
|
132
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
133
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
134
|
+
in the Software without restriction, including without limitation the rights
|
|
135
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
136
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
137
|
+
furnished to do so, subject to the following conditions:
|
|
138
|
+
|
|
139
|
+
The above copyright notice and this permission notice shall be included in all
|
|
140
|
+
copies or substantial portions of the Software.
|
|
141
|
+
|
|
142
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
143
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
144
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
145
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
146
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
147
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
148
|
+
SOFTWARE.
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### umap-js (1.4.x)
|
|
152
|
+
|
|
153
|
+
UMAP dimensionality reduction used by sequence-space and similarity viewers.
|
|
154
|
+
The npm package metadata declares MIT but the LICENSE file shipped in the
|
|
155
|
+
tarball is **Apache-2.0**, so we comply with the more conservative Apache-2.0
|
|
156
|
+
terms (preserve copyright/attribution; mark modifications, of which there are
|
|
157
|
+
none).
|
|
158
|
+
|
|
159
|
+
- Upstream: https://github.com/PAIR-code/umap-js
|
|
160
|
+
- Author: Andy Coenen (Google PAIR)
|
|
161
|
+
- License: **Apache-2.0**
|
|
162
|
+
|
|
163
|
+
> Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
164
|
+
> use this file except in compliance with the License. You may obtain a copy of
|
|
165
|
+
> the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
166
|
+
>
|
|
167
|
+
> Unless required by applicable law or agreed to in writing, software
|
|
168
|
+
> distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
169
|
+
> WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
170
|
+
> License for the specific language governing permissions and limitations
|
|
171
|
+
> under the License.
|
|
172
|
+
|
|
173
|
+
The full Apache-2.0 license text is available at the URL above and in
|
|
174
|
+
`node_modules/umap-js/LICENSE`.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 2. Linked at runtime via the Datagrok platform (webpack externals)
|
|
179
|
+
|
|
180
|
+
These libraries are not bundled into Bio's `dist/` — they are provided once
|
|
181
|
+
by the platform host and shared across all packages.
|
|
182
|
+
|
|
183
|
+
| Component | Version | License | Upstream |
|
|
184
|
+
|----------------------------------|---------|--------------|---------------------------------------------------|
|
|
185
|
+
| OpenChemLib JS | 7.x | BSD-3-Clause | https://github.com/cheminfo/openchemlib-js |
|
|
186
|
+
| RxJS | 6.x | Apache-2.0 | https://github.com/ReactiveX/rxjs |
|
|
187
|
+
| cash-dom | 8.x | MIT | https://github.com/fabiospampinato/cash |
|
|
188
|
+
| Day.js | 1.x | MIT | https://github.com/iamkun/dayjs |
|
|
189
|
+
| wu.js | 2.x | MIT | https://github.com/fitzgen/wu.js |
|
|
190
|
+
|
|
191
|
+
OpenChemLib JS is also referenced by Bio's `package.json` `sources`. The
|
|
192
|
+
upstream `openchemlib-js` npm package is distributed under BSD-3-Clause:
|
|
193
|
+
*Copyright (c) 2015-2017, cheminfo.*
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 3. Fetched at runtime from third-party CDNs (not bundled)
|
|
198
|
+
|
|
199
|
+
### kalign (via @biowasm/aioli)
|
|
200
|
+
|
|
201
|
+
`@biowasm/aioli` loads the **kalign** multiple-sequence-alignment tool from
|
|
202
|
+
the public biowasm CDN (`https://biowasm.com/cdn/v3/...`) on demand. kalign
|
|
203
|
+
itself is **not** bundled into Bio's `dist/` and is **not** redistributed by
|
|
204
|
+
the Datagrok platform. Users that load it transitively are subject to
|
|
205
|
+
kalign's upstream license (GPLv3).
|
|
206
|
+
|
|
207
|
+
- Upstream: https://github.com/TimoLassmann/kalign
|
|
208
|
+
- License: GPLv3 (used as a runtime-fetched, non-bundled dependency)
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 4. Docker container (`dockerfiles/`) — PepSeA service
|
|
213
|
+
|
|
214
|
+
The Bio package ships a single Docker image (`dockerfiles/Dockerfile`) that
|
|
215
|
+
provides a PepSeA-based MSA service for HELM peptide sequences. The image is
|
|
216
|
+
built from `datagrok/python` and pulls third-party software at build time:
|
|
217
|
+
|
|
218
|
+
| Component | Source | License |
|
|
219
|
+
|---------------|-------------------------------------------------|------------------------|
|
|
220
|
+
| PepSeA | https://github.com/Merck/PepSeA (main branch) | MIT (Merck & Co.) |
|
|
221
|
+
| MAFFT | https://mafft.cbrc.jp/ (`mafft_7.520-1` .deb) | MAFFT license (BSD-style, free for any use with attribution) |
|
|
222
|
+
| FastAPI | https://github.com/tiangolo/fastapi | MIT |
|
|
223
|
+
| uvicorn | https://www.uvicorn.org/ | BSD-3-Clause |
|
|
224
|
+
| ujson | https://github.com/ultrajson/ultrajson | BSD-3-Clause |
|
|
225
|
+
| Python stdlib | https://www.python.org/ | PSF License |
|
|
226
|
+
|
|
227
|
+
The `Dockerfile` patches a few lines of PepSeA's `api.py` at build time to
|
|
228
|
+
add a `/distout` endpoint and JSON error-handling middleware; per MIT terms
|
|
229
|
+
those modifications are noted here.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 5. Development-only dependencies
|
|
234
|
+
|
|
235
|
+
Tools used during the build/test cycle (not in the runtime tree, not bundled):
|
|
236
|
+
the `datagrok-tools` CLI transitively pulls in `puppeteer-screen-recorder`,
|
|
237
|
+
which references `@ffmpeg-installer/ffmpeg` (LGPL-2.1) and
|
|
238
|
+
`@ffmpeg-installer/win32-x64` (GPLv3). These binaries are **not**
|
|
239
|
+
redistributed as part of the published Bio plugin and impose no obligation on
|
|
240
|
+
users of the plugin.
|
|
241
|
+
|
|
242
|
+
The peer/devDependencies on other Datagrok plugins (`@datagrok/chem`,
|
|
243
|
+
`@datagrok/dendrogram`, `@datagrok/eda`, `@datagrok/helm`,
|
|
244
|
+
`@datagrok/peptides`) are MIT — covered by the repo-wide `LICENSE.md`. Each
|
|
245
|
+
of those plugins maintains its own `CREDITS.md` (or will) for its own
|
|
246
|
+
third-party content.
|