chromosomix 0.15.0 → 0.16.0
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/LICENSE +674 -21
- package/README.md +53 -21
- package/dist/THIRD-PARTY-NOTICES.txt +2108 -5
- package/dist/assets/{ConnectCard-BcF7yN3J.js → ConnectCard-CWRFeF4q.js} +1 -1
- package/dist/assets/{Tour-DtvHIrnL.js → Tour-5RTXNjqt.js} +1 -1
- package/dist/assets/analysis.worker-DZ9FXIW0.js +8 -0
- package/dist/assets/annotations.worker-Bybt4X5J.js +27 -0
- package/dist/assets/index-CJPGLvTr.css +1 -0
- package/dist/assets/index-DkMx8MnH.js +103 -0
- package/dist/assets/reader.worker-CuEqyC9X.js +9 -0
- package/dist/assets/{three-DUW-4V8x.js → three-D5ICz1As.js} +1 -1
- package/dist/assets/tutorial-qCyAYx6Y.js +1 -0
- package/dist/assets/workspace-tu5v3vK_.js +17 -0
- package/dist/index.html +2 -2
- package/dist-cli/THIRD-PARTY-NOTICES.txt +2085 -4
- package/dist-cli/chromosomix.mjs +2948 -164
- package/package.json +2 -2
- package/dist/assets/analysis.worker-Bm2zTBIx.js +0 -8
- package/dist/assets/annotations.worker-BvCmkKSu.js +0 -26
- package/dist/assets/index-BbgBTtaF.css +0 -1
- package/dist/assets/index-DRGTqAZS.js +0 -101
- package/dist/assets/reader.worker-DIog29UW.js +0 -9
- package/dist/assets/tutorial-CynUtAtB.js +0 -1
- package/dist/assets/workspace-BLcAFpeE.js +0 -17
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://www.npmjs.com/package/chromosomix)
|
|
7
7
|
[](https://github.com/js2264/chromosomix/releases)
|
|
8
8
|
[](https://chromosomix.app/validation/)
|
|
9
|
-
[](LICENSE)
|
|
10
10
|
|
|
11
11
|
**A unified genome browser for multi-dimensional genomic data.** Chromatin contact maps, genome tracks and 3D models, side by side, straight from your files.
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ chromosomix launches in about a second and reads your data where it lives, on yo
|
|
|
21
21
|
- Support for all genomic data types:
|
|
22
22
|
- Supports 1D genomic formats: bigWig, bigBed, BED, bedGraph, wig, GTF/GFF3, FASTA (+`.fai`), `.2bit`, BAM, VCF, barChart/bigBarChart, genePred/refFlat/bigGenePred, bedMethyl/bigMethyl, chrom.sizes, ...
|
|
23
23
|
- Supports 2D genomic formats: `.*cool`, `.hic`, HiC-Pro, `pairs(.gz)`, ..., at every resolution the file stores. Also supports interaction formats: BEDPE, and UCSC's `interact`/`bigInteract` and `longrange`/longTabix — drawn as arcs over the contact map and as their own lane in the 1D browser.
|
|
24
|
-
- Supports 3D genomic formats: WashU's g3d (text or binary), `.3dg`, and `bed3d`, drawn in 3D and synchronized with the maps and tracks view.
|
|
24
|
+
- Supports 3D genomic formats: WashU's g3d (text or binary), `.3dg`, and `bed3d`, drawn in 3D and synchronized with the maps and tracks view. Every model also leaves as a PDB for PyMOL, ChimeraX and the other molecular viewers, a chain per chromosome and bonds along the fibre, and reads back here.
|
|
25
25
|
|
|
26
26
|
- Perform analyses directly in the browser:
|
|
27
27
|
- 1D analysis tasks: peak calling from a coverage track (yapc, with IDR between replicates), motif search, base composition and GC skew, the origin and terminus of replication, metaplots, track correlation, FRiP over a feature set, signal by group, interval overlap with a shuffle null, ...
|
|
@@ -30,8 +30,6 @@ chromosomix launches in about a second and reads your data where it lives, on yo
|
|
|
30
30
|
|
|
31
31
|
- Serverless browser & CLI-based: there is no upload, no required preprocessing step and no backend of any kind — the viewer is static files that read standard genome-wide formats directly. Every analysis can be run **interactively**, in the browser, or **programmatically**, with the `chromosomix` command line in a script or a pipeline: the same tasks, with the same parameters, producing the same results. A bottom Console panel in the browser records every run and reports the `chromosomix` command that repeats it.
|
|
32
32
|
|
|
33
|
-
- Side by side: contact maps, 1D browsers and 3D models open as the cells of a deck, panned and zoomed together, and several sessions stay open at once, one tab each.
|
|
34
|
-
|
|
35
33
|
- Dedicated browser panels, four around the picture:
|
|
36
34
|
- General panel: the file itself — its attributes, its chromosomes (or a metagenome's genomes and contigs), a minimap of the genome and the metadata it stores.
|
|
37
35
|
- Aesthetics panel: to customize scales, color map, normalization, track layout, grouping, ...
|
|
@@ -42,13 +40,15 @@ chromosomix launches in about a second and reads your data where it lives, on yo
|
|
|
42
40
|
- Cloud-based file access: Open files directly from any object store that serves byte ranges with CORS (e.g. S3, Cloudflare R2, Google Cloud Storage, or any HTTP server that supports range requests), from Dropbox and Google Drive share links, and private Google Drive folder or Dropbox.
|
|
43
41
|
- Stores: several pre-configured remote data stores are available — the lab's own figures, IGV's genomes, 4DN open data, ENCODE, DNA Zoo and Roadmap — and so is any UCSC track hub with a `hub.txt` file. The user can also setup their own store by providing a structured JSON file describing the store and its data.
|
|
44
42
|
|
|
43
|
+
- Side by side: contact maps, 1D browsers and 3D models open as the cells of a deck, panned and zoomed together, and several sessions stay open at once, one tab each.
|
|
44
|
+
|
|
45
45
|
## Philosophy
|
|
46
46
|
|
|
47
47
|
1. **No backend or install of any kind.** No tile server, no specific process on a host, no accounts. The viewer is static files; the data are objects on a bucket, or a file on your disk. This is what makes the app free to run and free to archive.
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
2. **Nothing is uploaded.** A local file is handed to an air-gapped worker by reference and read in place through the Emscripten filesystem. Nothing crosses the network, which is why there is no account system, no storage, no hosting cost and nothing to review for GDPR. You can open unpublished patient-derived genomic data on a laptop with the network cable out.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
3. **No pre-parsing of genomic files is required.** Contact maps and 1D genomic files are read in bounded reads, and the rest is pure canvas transforms with **zero** further I/O. That is the central difference from HiGlass, which needs a tile server, a tile cache and a tile compositor to stream contact maps.
|
|
52
52
|
|
|
53
53
|
## Using chromosomix
|
|
54
54
|
|
|
@@ -96,17 +96,9 @@ A minimal version of the viewer can be added to any HTML page as an `<iframe>`.
|
|
|
96
96
|
|
|
97
97
|
Paste it into a page and it works (not rendered here though because GitHub does not allow `<iframe>`). The `src` URL is the same as the one you would use to open the viewer in a browser, with the addition of `?embed=1` to tell it to hide the header and tab strip.
|
|
98
98
|
|
|
99
|
-
The text below is a live version of the above `<iframe>` (it will not work on GitHub, but it would work on any HTML page):
|
|
100
|
-
|
|
101
|
-
<iframe
|
|
102
|
-
src="https://chromosomix.app/?embed=1#uri=https://rsglab-data.s3.eu-west-3.amazonaws.com/demo/yeast/Yeast_microC_G2M_1kb.cool&view=region®ion=IV:1000000-1400000&transform=log10&balance=true"
|
|
103
|
-
width="100%"
|
|
104
|
-
height="640"
|
|
105
|
-
></iframe>
|
|
106
|
-
|
|
107
99
|
## Using the chromosomix analysis CLI
|
|
108
100
|
|
|
109
|
-
|
|
101
|
+
Over thirty analysis tasks can be executed programatically through the CLI, with the same parameters and producing the same results as the Analysis panel interactively. This can be used in a pipeline or a script.
|
|
110
102
|
|
|
111
103
|
### Installing the CLI
|
|
112
104
|
|
|
@@ -165,6 +157,14 @@ chromosomix tasks
|
|
|
165
157
|
## --matrix (default true) draw the square
|
|
166
158
|
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
167
159
|
##
|
|
160
|
+
## cellqc
|
|
161
|
+
## Per-cell contact QC
|
|
162
|
+
## --cells (default "all") cells
|
|
163
|
+
## --nearFrom (default 23000) near band, from
|
|
164
|
+
## --nearTo (default 2000000) near band, to
|
|
165
|
+
## --mitoticTo (default 12000000) mitotic band, to
|
|
166
|
+
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
167
|
+
##
|
|
168
168
|
## expected
|
|
169
169
|
## Contact probability P(s)
|
|
170
170
|
## --scope (default "contig") scope
|
|
@@ -251,6 +251,18 @@ chromosomix tasks
|
|
|
251
251
|
## --armWindow (default 50) window along the arms
|
|
252
252
|
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
253
253
|
##
|
|
254
|
+
## loops
|
|
255
|
+
## Loop calling
|
|
256
|
+
## --sequences sequences
|
|
257
|
+
## --outer (default 5) outer half-width
|
|
258
|
+
## --inner (default 2) inner half-width
|
|
259
|
+
## --maxSeparation (default 1000) furthest from the diagonal
|
|
260
|
+
## --fdr (default 0.1) false discovery rate
|
|
261
|
+
## --lambdaBins (default 40) λ-chunks
|
|
262
|
+
## --clusteringRadius (default 2) clustering radius
|
|
263
|
+
## --filter (default true) enrichment filter
|
|
264
|
+
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
265
|
+
##
|
|
254
266
|
## chromosight
|
|
255
267
|
## Pattern detection
|
|
256
268
|
## --pattern (default "loops") pattern
|
|
@@ -267,6 +279,14 @@ chromosomix tasks
|
|
|
267
279
|
## --maxQvalue (default 1) report down to a q-value of
|
|
268
280
|
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
269
281
|
##
|
|
282
|
+
## hicrep
|
|
283
|
+
## Reproducibility
|
|
284
|
+
## --against <file> The other maps to compare with; repeat per map
|
|
285
|
+
## --sequences sequences
|
|
286
|
+
## --maxDistance (default 500) furthest separation compared
|
|
287
|
+
## --smooth (default 1) smoothing half-width
|
|
288
|
+
## --no-balance read the raw counts (balanced by default where the file carries weights)
|
|
289
|
+
##
|
|
270
290
|
## apa
|
|
271
291
|
## Aggregate peak analysis
|
|
272
292
|
## --anchors (default "pairs") anchors
|
|
@@ -457,7 +477,8 @@ chromosomix tasks
|
|
|
457
477
|
|
|
458
478
|
Each analysis is held to the package it reproduces — cooltools, coolpuppy, chromosight, deepTools,
|
|
459
479
|
bedtools and a dozen others — on public data, command for command, in a notebook rendered with every
|
|
460
|
-
release: <https://chromosomix.app/validation/>,
|
|
480
|
+
release: <https://chromosomix.app/validation/>, with every number its figures draw in one table beside
|
|
481
|
+
it, <https://chromosomix.app/validation/validation.txt>; and how long each command takes beside its
|
|
461
482
|
reference, <https://chromosomix.app/timings/>.
|
|
462
483
|
|
|
463
484
|
Every task writes its results where `--out` points, each named after the file it came from up to
|
|
@@ -534,7 +555,8 @@ chromosomix circular ecoli.mcool::/resolutions/5000
|
|
|
534
555
|
chromosomix interarm ecoli.mcool::/resolutions/5000 --circular NC_000913.3 \
|
|
535
556
|
--origin NC_000913.3:3925744 --out results/
|
|
536
557
|
|
|
537
|
-
# A 3D model built from the map, written as a bed3d the viewer opens beside it
|
|
558
|
+
# A 3D model built from the map, written as a bed3d the viewer opens beside it,
|
|
559
|
+
# and as a PDB for PyMOL.
|
|
538
560
|
chromosomix reconstruct3d ecoli.mcool::/resolutions/20000 --out results/
|
|
539
561
|
|
|
540
562
|
# What the session set from the picture, as flags: the score column a
|
|
@@ -558,15 +580,25 @@ The log is kept in your own browser for seven days or five hundred lines, whiche
|
|
|
558
580
|
|
|
559
581
|
## Licence
|
|
560
582
|
|
|
561
|
-
|
|
583
|
+
Copyright © 2026 Jacques Serizay.
|
|
584
|
+
|
|
585
|
+
chromosomix is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License, in [`LICENSE`](LICENSE), for more details.
|
|
586
|
+
|
|
587
|
+
It is under the GPL because its peak calling is ported from yapc (GPL-3.0) and the IDR test it runs across replicates from IDR (GPL-2.0 or later), and a translation of GPL code can only be distributed under the GPL.
|
|
588
|
+
|
|
589
|
+
Every build also carries the work of other projects, each under its own licence, and the app names them in **About → Licences**:
|
|
590
|
+
|
|
591
|
+
- **Libraries compiled into the bundles:** three.js (MIT); echarts (Apache-2.0) with zrender (BSD-3-Clause) and tslib (0BSD); h5wasm (NIST's notice, with the BSD-style licence of the HDF5 library inside it); and `@gmod/bbi` with its dependencies `generic-filehandle2`, `@gmod/abortable-promise-cache` and `@jbrowse/quick-lru` (all MIT).
|
|
592
|
+
- **Code ported from reference implementations**, where an analysis follows its reference function for function so that it gives the same numbers: yapc (GPL-3.0) and IDR (GPL-2.0 or later) for peak calling; cooltools (MIT) for loop calling and insulation's peak prominence; cooler (BSD-3-Clause) for region strings; chromosight (MIT) for pattern detection; SciPy (BSD-3-Clause) with the cephes functions its `xsf` carries for the Poisson tail and `fminbound`; NumPy (BSD-3-Clause, and NCSA or BSD-3-Clause for `numpy.random`) for its pairwise sums and its binomial and hypergeometric samplers; scikit-learn (BSD-3-Clause) for BIRCH; Boost-HiC (MIT); and fdlibm (Sun Microsystems' notice) for the error function.
|
|
593
|
+
- **Material copied into the source by a generator:** Lucide (ISC), Simple Icons (CC0), chromosight's kernels (MIT), matplotlib's colour tables (the Matplotlib licence) and ColorBrewer's schemes (Apache-2.0).
|
|
562
594
|
|
|
563
|
-
|
|
595
|
+
All of them are compatible with version 3 of the GPL. Each build lists what it carries and reproduces every one of those licences in full, after chromosomix's own, in `THIRD-PARTY-NOTICES.txt`, beside its `index.html`:
|
|
564
596
|
|
|
565
597
|
- the web app: <https://chromosomix.app/THIRD-PARTY-NOTICES.txt>;
|
|
566
598
|
- the npm package: `dist/` for the viewer, `dist-cli/` for the command;
|
|
567
|
-
- the desktop app: inside the application;
|
|
599
|
+
- the desktop app: inside the application, beside the licences of Electron and Chromium that every installer ships;
|
|
568
600
|
- the standalone HTML page: in a comment at the end of the file.
|
|
569
601
|
|
|
570
|
-
The upstream texts that are not in an npm package are kept under [`licenses/`](licenses/).
|
|
602
|
+
The upstream texts that are not in an npm package are kept under [`licenses/`](licenses/), and so is the MIT licence `generic-filehandle2` declares but does not ship.
|
|
571
603
|
|
|
572
604
|
**Trademarks.** The logos on the data store tiles (IGV, 4DN, ENCODE, DNA Zoo, UCSC and Roadmap Epigenomics) are those projects' own published marks, and the GitHub, Google Drive and Dropbox marks in the interface are their owners' trademarks. Each is shown only to name the store or service it stands for. None of them is covered by chromosomix's licence or by the notices above, and their use implies no endorsement of chromosomix by their owners.
|