@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 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 \| Get Region...` | `getRegionTopMenu` | Extracts sub-region from macromolecule column |
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
- | `split-to-monomers.ts` | `splitToMonomersUI()` splits aligned sequences into per-position `Monomer` columns using `joinDataFrames` |
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
- **Expected output shape (matches antpack reference script `scripts/number_antibody.py`):**
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
- - **scripts/number_antibody.py** — Python/AntPack reference (non-commercial license, not shipped in production; kept for correctness cross-checks only)
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()`, `helmToMolfileV3K()`, `helmToSmiles()`, column tag management |
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
- | `MonomerLibFromFilesProvider` | Reads/writes monomer library JSON files from `System:AppData/Bio/` file shares. CRUD operations, HELM JSON schema validation. |
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. `matchMoleculesWithMonomers()` — matches molecules against library by canonical SMILES. `standardizeMonomerLibrary()` — normalizes a library JSON. |
293
- | `duplicate-manager.ts` | `DuplicateManager` — UI for resolving duplicate monomer conflicts across libraries. Monomer cards grouped by symbol, user picks preferred source. |
294
- | `default-r-groups.ts` | Default R-group definitions (R1-R6 with cap group SMILES) |
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/` (mol-to-helm.py, sequence_generator.py, embed.py) |
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.