# Third-party software, data and source provenance

The Bioinformatics workbench bundles independently licensed programs and libraries, and uses others that the browser loads at run time. Each keeps its own licence: the MIT licence of the Biowasm build framework does **not** relicense the programs it compiled, and none of the licences below applies to the workbench's own text and code. Keep each component's notices and licence files when copying or redistributing its files.

## Command-line programs (WebAssembly, run in the browser)

These are the real programs, compiled to WebAssembly. They run on the student's own computer, inside the web page – in the Terminal, in notebook cells (`!`, `%%bash`) and as the tools of the Galaxy tab. Each folder `assets/vendor/biowasm/NAME/VERSION/` holds the program (`.wasm`, its JavaScript loader, sometimes a `.data` file), its licence, a `NOTICE.txt` (origin and local changes) and `SHA256SUMS`. (The folder of the base module has a notice and checksums only: its licence is the Biowasm licence in `assets/vendor/biowasm/LICENSE.txt`. The four files at the top of `assets/vendor/biowasm/` – the runner, its licence and the two descriptions of the local changes – have a `SHA256SUMS` of their own there.)

| Program | Version | Licence | Folder | Upstream source |
| --- | --- | --- | --- | --- |
| fastp | 0.20.1 | MIT | [fastp/0.20.1](assets/vendor/biowasm/fastp/0.20.1/) | [OpenGene/fastp](https://github.com/OpenGene/fastp/tree/v0.20.1) |
| Cutadapt, with dnaio 1.2.4 and xopen 2.1.0 – a Python program; it runs in the Python bundled with it, **Pyodide 314.0.7** (CPython 3.14.2; one copy, shared with Bracken and MACS3) | 5.2 | MIT; their compiled parts generated by Cython (notices in `cython-notices/`); Pyodide and hiwire: **Mozilla Public License 2.0**; CPython: PSF licence; the libraries in the runtime (Emscripten, libffi, xz, zstd, SQLite, bzip2, zlib) their own – see `runtime-notices/` | [genomics-wasm/cutadapt/5.2](assets/vendor/genomics-wasm/cutadapt/5.2/), [genomics-wasm/pyodide/314.0.7](assets/vendor/genomics-wasm/pyodide/314.0.7/) | [marcelm/cutadapt](https://github.com/marcelm/cutadapt/tree/v5.2) (`cutadapt-5.2.tar.gz` on PyPI), dnaio and xopen (PyPI); [pyodide/pyodide](https://github.com/pyodide/pyodide/tree/314.0.7) and [pyodide/hiwire](https://github.com/pyodide/hiwire/tree/6a1e67280a15d929ebeceee54a6358c9c8d5f697), [included](assets/vendor/licenses/sources/) |
| seqtk | 1.4 | MIT | [seqtk/1.4](assets/vendor/biowasm/seqtk/1.4/) | [lh3/seqtk](https://github.com/lh3/seqtk/tree/v1.4) |
| wgsim | 0.3.1-r13 (Biowasm's build of 17 Oct 2011) | MIT | [wgsim/2011.10.17](assets/vendor/biowasm/wgsim/2011.10.17/) | [lh3/wgsim](https://github.com/lh3/wgsim) |
| minimap2 | 2.22 | MIT | [minimap2/2.22](assets/vendor/biowasm/minimap2/2.22/) | [lh3/minimap2](https://github.com/lh3/minimap2/tree/v2.22) |
| **Bowtie 2** (`bowtie2-align-s`, `bowtie2-build-s`) | 2.4.2 | **GNU GPL 3**; built with zlib (zlib licence) | [bowtie2/2.4.2](assets/vendor/biowasm/bowtie2/2.4.2/) | [BenLangmead/bowtie2](https://github.com/BenLangmead/bowtie2/tree/v2.4.2), [included](assets/vendor/licenses/sources/) |
| **BWA** | 0.7.19 (r1273) | **GNU GPL 3**; built with zlib 1.3.1 (zlib licence) | [bwa/0.7.19](assets/vendor/biowasm/bwa/0.7.19/) | [lh3/bwa](https://github.com/lh3/bwa/tree/b92993c1161e73167181558856567ef2f367e3f0), [included](assets/vendor/licenses/sources/) |
| **HISAT2** (`hisat2-build`, `hisat2-align`, `hisat2-inspect` in one program) | 2.2.2 | **GNU GPL 3**; notices of its parts in `THIRD_PARTY_LICENSES.txt` | [hisat2/2.2.2](assets/vendor/biowasm/hisat2/2.2.2/) | [DaehwanKimLab/hisat2](https://github.com/DaehwanKimLab/hisat2/tree/99583d7536b9ee017ac07de8834017a3bf99a2fe), [included](assets/vendor/licenses/sources/) |
| **FreeBayes** (with HTSlib, vcflib, SeqLib and other parts) | 1.3.6 | MIT; contains libdisorder (**GNU GPL 2 or later**), so the program is distributed under the GPL; parts: MIT, BSD, Apache 2.0, zlib – see its `LICENSES/` | [freebayes/1.3.6](assets/vendor/biowasm/freebayes/1.3.6/) | [freebayes/freebayes](https://github.com/freebayes/freebayes/tree/084dce52e54af5adbd1e2b0a67f3733dd8bfddc0) with its submodules, [included](assets/vendor/licenses/sources/) |
| BWA-MEM2 | 2.2.1 | MIT; built with safestringlib (MIT) and zlib 1.3.1 (zlib licence) | [bwa-mem2/2.2.1](assets/vendor/biowasm/bwa-mem2/2.2.1/) | [bwa-mem2/bwa-mem2](https://github.com/bwa-mem2/bwa-mem2/tree/bf3d376e95f4321b0d37a27d7ff1c77da4d289ff), [intel/safestringlib](https://github.com/intel/safestringlib/tree/245c4b8cff1d2e7338b7f3a82828fc8e72b29549) |
| **featureCounts** (Subread) – runs on several threads | 2.1.1 | **GNU GPL 3 or later**; built with zlib 1.3.1 | [genomics-wasm/featurecounts/2.1.1](assets/vendor/genomics-wasm/featurecounts/2.1.1/) | [subread.sourceforge.net](https://subread.sourceforge.net/) (`subread-2.1.1-source.tar.gz`), [included](assets/vendor/licenses/sources/) |
| StringTie (with the HTSlib 1.21, htscodecs, libdeflate, bzip2 and XZ it bundles) | 3.0.3 | MIT; its parts MIT, BSD, zlib, public domain – see its `THIRD_PARTY_LICENSES.txt` | [stringtie/3.0.3](assets/vendor/biowasm/stringtie/3.0.3/) | [gpertea/stringtie](https://github.com/gpertea/stringtie/releases/tag/v3.0.3) (`stringtie-3.0.3.offline.tar.gz`) |
| kallisto (with Bifrost, BBHash, CRoaring, libdivide) | 0.52.0 | BSD 2-Clause; its parts BSD, MIT, Apache 2.0, zlib – see its folder | [kallisto/0.52.0](assets/vendor/biowasm/kallisto/0.52.0/) | [pachterlab/kallisto](https://github.com/pachterlab/kallisto/tree/4e9f29cf3b021260415430c057a22469ca081391) |
| Salmon (the Rust implementation, with 426 crates and Rust's standard library) – runs on several threads | 2.8.0 | BSD 3-Clause; the crates under MIT, Apache 2.0 and other permissive licences (each listed in its `THIRD_PARTY_LICENSES.txt`, their notices in `CRATE-NOTICES.txt`); Rust: MIT or Apache 2.0 | [genomics-wasm/salmon/2.8.0](assets/vendor/genomics-wasm/salmon/2.8.0/) | [COMBINE-lab/salmon](https://github.com/COMBINE-lab/salmon/releases/tag/v2.8.0) (`source.tar.gz`); the crates from crates.io, pinned by SHA-256 in genomics-wasm's `tools/salmon/sources.lock.json` |
| mosdepth (Nim, with hts-nim, docopt.nim, nim-regex, nim-unicodedb, HTSlib 1.24) | 0.3.14 | MIT; Nim's runtime MIT; HTSlib MIT/Expat and modified BSD; zlib licence; Unicode data: Unicode licence | [mosdepth/0.3.14](assets/vendor/biowasm/mosdepth/0.3.14/) | [brentp/mosdepth](https://github.com/brentp/mosdepth/tree/v0.3.14) |
| LoFreq (`lofreq`; `lofreq somatic` through genomics-wasm's translation of its workflow script, `lofreq-somatic.mjs`, MIT) | 2.1.5 | MIT; built with HTSlib 1.24 (MIT/Expat and modified BSD, with htscodecs), zlib 1.3.1 and two functions of OpenLibm 0.8.8; contains uthash and DCDFLIB – notices in its folder | [genomics-wasm/lofreq/2.1.5](assets/vendor/genomics-wasm/lofreq/2.1.5/) | [CSB5/lofreq](https://github.com/CSB5/lofreq/tree/v2.1.5) |
| SomaticSniper (`bam-somaticsniper`) | 1.0.5.0 | MIT; contains SAMtools 0.1.6 (MIT); built with zlib 1.3.1 | [genomics-wasm/somaticsniper/1.0.5.0](assets/vendor/genomics-wasm/somaticsniper/1.0.5.0/) | [genome/somatic-sniper](https://github.com/genome/somatic-sniper/tree/v1.0.5.0) |
| **Strelka2** (`strelka2`, `GetChromDepth`, `MergeRunStats`, and the `bgzip`, `tabix`, `htsfile` and `bgzf_cat` of its HTSlib; the somatic workflow through genomics-wasm's translation of its Python 2 scripts, `strelka2-somatic.mjs`) | 2.9.10 | **GNU GPL 3 or later**; contains a subset of Boost 1.58 (Boost Software Licence), HTSlib 1.7 (MIT/Expat and modified BSD), CodeMin 1.0.5, RapidJSON 1.1.0 (MIT) and bgzf_extras (MIT); built with zlib 1.3.1 – see its `THIRD_PARTY_LICENSES.txt` | [genomics-wasm/strelka2/2.9.10](assets/vendor/genomics-wasm/strelka2/2.9.10/) | [Illumina/strelka](https://github.com/Illumina/strelka/releases/tag/v2.9.10) (`strelka-2.9.10.release_src.tar.bz2`), [included](assets/vendor/licenses/sources/) |
| Kraken2 (`classify`, `build_db`, `estimate_capacity`, `dump_table`: what `kraken2`, `kraken2-build` and `kraken2-inspect` run; with genomics-wasm's `kraken2.mjs`, MIT) | 2.17.2 | MIT; contains kseq (MIT) and code from KrakenUniq (its copyright notice in the folder) | [genomics-wasm/kraken2/2.17.2](assets/vendor/genomics-wasm/kraken2/2.17.2/) | [DerrickWood/kraken2](https://github.com/DerrickWood/kraken2/tree/2.17.2) |
| **Bracken** (`est_abundance.py`, `generate_kmer_distribution.py` – Python, in the Pyodide 314.0.7 of Cutadapt – and `kmer2read_distr`: what `bracken` and `bracken-build` run) | 3.1 | **GNU GPL 3 or later**; Pyodide and its libraries as for Cutadapt | [genomics-wasm/bracken/3.1](assets/vendor/genomics-wasm/bracken/3.1/), [genomics-wasm/pyodide/314.0.7](assets/vendor/genomics-wasm/pyodide/314.0.7/) | [jenniferlu717/Bracken](https://github.com/jenniferlu717/Bracken/tree/v3.1), [included](assets/vendor/licenses/sources/) |
| MACS3 (`macs3`: callpeak, hmmratac, bdgcmp and its other commands), with hmmlearn 0.3.3 – a Python program, in the Pyodide 314.0.7 of Cutadapt, with Pyodide's builds of NumPy 2.4.6, SciPy 1.18.0, pandas 3.0.2, scikit-learn 1.8.0, h5py 3.13.0, joblib, threadpoolctl, python-dateutil, pytz, tzdata, six, packaging and pkgconfig (in [genomics-wasm/pyodide/314.0.7](assets/vendor/genomics-wasm/pyodide/314.0.7/)), and AnnData 0.10.9, array-api-compat 1.11.2 and natsort 8.4.0 | 3.0.5 | BSD 3-Clause; its fermi-lite, ksw and swalign code MIT, SIMDe MIT and CC0; hmmlearn BSD 3-Clause; their compiled parts generated by Cython (`cython-notices/`); the Python packages BSD, MIT and Apache 2.0, with OpenBLAS, LAPACK and libf2c, Boost, HDF5 and zlib compiled into some – every notice in `scientific-notices/`, listed in `THIRD_PARTY_LICENSES.txt`; Pyodide's recipes for its packages: **Mozilla Public License 2.0**; Pyodide and its libraries as for Cutadapt | [genomics-wasm/macs3/3.0.5](assets/vendor/genomics-wasm/macs3/3.0.5/), [genomics-wasm/pyodide/314.0.7](assets/vendor/genomics-wasm/pyodide/314.0.7/) | [macs3-project/MACS](https://github.com/macs3-project/MACS/tree/v3.0.5) (`macs3-3.0.5.tar.gz` on PyPI), [hmmlearn](https://github.com/hmmlearn/hmmlearn/tree/0.3.3) and the other packages (PyPI); [pyodide/pyodide-recipes](https://github.com/pyodide/pyodide-recipes/tree/314-20260911), [included](assets/vendor/licenses/sources/) |
| **Prodigal** | 2.6.3 | **GNU GPL 3 or later** | [genomics-wasm/prodigal/2.6.3](assets/vendor/genomics-wasm/prodigal/2.6.3/) | [hyattpd/Prodigal](https://github.com/hyattpd/Prodigal/tree/v2.6.3), [included](assets/vendor/licenses/sources/) |
| HMMER (`hmmbuild`, `hmmsearch`, `hmmscan`, `hmmpress`, `hmmfetch`, `hmmalign`, `hmmconvert`, `hmmemit`, `hmmstat`, `phmmer`, `jackhmmer`, `nhmmer`, `nhmmscan`), with Easel 0.49 and libdivsufsort-lite 2.0.0; compiled again for this site with one change to Easel (see below) | 3.4 | BSD 3-Clause (with the sublicence for Michael Farrar's SIMD code); Easel: BSD 2-Clause; libdivsufsort-lite: MIT; the source files that carry further notices (one under CC BY 3.0) in `LICENSE.embedded` | [genomics-wasm/hmmer/3.4](assets/vendor/genomics-wasm/hmmer/3.4/) | [eddylab.org](https://eddylab.org/software/hmmer/hmmer-3.4.tar.gz) ([EddyRivasLab/hmmer](https://github.com/EddyRivasLab/hmmer/tree/9acd8b6758a0ca5d21db6d167e0277484341929b)) |
| bustools (all its commands, one program), with CRoaring 0.2.65, Eigen 3.3.7, kseq, CppNumericalSolvers and LBFGSpp | 0.45.1 | BSD 2-Clause; CRoaring: Apache 2.0; **Eigen: Mozilla Public License 2.0** (with parts under BSD; built without its LGPL parts); kseq, CppNumericalSolvers and LBFGSpp: MIT; built with zlib 1.3.1 | [genomics-wasm/bustools/0.45.1](assets/vendor/genomics-wasm/bustools/0.45.1/) | [BUStools/bustools](https://github.com/BUStools/bustools/tree/d4d7a283dbe9d34d2106e9ba31e2566413be6a70), [included](assets/vendor/licenses/sources/) |
| **PLINK 2** (`plink2`, built without LAPACK), with libdeflate 1.25, zstd 1.5.7, SIMDe 0.8.2, SFMT and a part of QD | 2.0.0-b.1-dev (12 Oct 2026) | **GNU GPL 3 or later** (its library parts also LGPL 3 or later); libdeflate and SIMDe: MIT; zstd: BSD 3-Clause or GPL 2; SFMT and QD: BSD-style; built with zlib 1.3.2 – notices in its folder | [genomics-wasm/plink2/2.0.0-b.1-dev](assets/vendor/genomics-wasm/plink2/2.0.0-b.1-dev/) | [chrchang/plink-ng](https://github.com/chrchang/plink-ng/tree/72119068234ce0acf7189e53dfe67a527bc53e2c), [included](assets/vendor/licenses/sources/) |
| SAMtools | 1.17 | MIT/Expat | [samtools/1.17](assets/vendor/biowasm/samtools/1.17/) | [samtools](https://github.com/samtools/samtools/tree/1.17) |
| BCFtools (with its built-in HTSlib 1.10) | 1.10 | MIT/Expat (GPL only if built with the GNU Scientific Library, which it is not); HTSlib: MIT/Expat and modified 3-clause BSD | [bcftools/1.10](assets/vendor/biowasm/bcftools/1.10/) | [bcftools](https://github.com/samtools/bcftools/tree/1.10) |
| HTSlib utilities `bgzip`, `tabix` | 1.17 | MIT/Expat and modified 3-clause BSD | [htslib/1.17](assets/vendor/biowasm/htslib/1.17/) | [htslib](https://github.com/samtools/htslib/tree/1.17) |
| bedtools | 2.31.0 | MIT | [bedtools/2.31.0](assets/vendor/biowasm/bedtools/2.31.0/) | [arq5x/bedtools2](https://github.com/arq5x/bedtools2/tree/v2.31.0) |
| gffread (with GCLib) | 0.12.7 | MIT; GCLib: Artistic License 2.0 | [gffread/0.12.7](assets/vendor/biowasm/gffread/0.12.7/) | [gpertea/gffread](https://github.com/gpertea/gffread/tree/v0.12.7) |
| **Kalign** | 3.3.1 | **GNU GPL 3** | [kalign/3.3.1](assets/vendor/biowasm/kalign/3.3.1/) | [TimoLassmann/kalign](https://github.com/TimoLassmann/kalign/tree/v3.3.1), [included](assets/vendor/licenses/sources/) |
| MUSCLE | 3.8.1551 | public domain | [muscle/3.8.1551](assets/vendor/biowasm/muscle/3.8.1551/) | [drive5.com](https://drive5.com/muscle/muscle_src_3.8.1551.tar.gz) |
| **FastTree** | 2.1.11 | **GNU GPL 2 or later** | [fasttree/2.1.11](assets/vendor/biowasm/fasttree/2.1.11/) | [microbesonline.org/fasttree](http://www.microbesonline.org/fasttree/), [included](assets/vendor/licenses/sources/) |
| seq-align (`needleman_wunsch`, `smith_waterman`, `lcs`) | 2017.10.18 | public domain (the Unlicense) | [seq-align/2017.10.18](assets/vendor/biowasm/seq-align/2017.10.18/) | [noporpoise/seq-align](https://github.com/noporpoise/seq-align) |
| LASTZ | 1.04.52 | MIT | [lastz/1.04.52](assets/vendor/biowasm/lastz/1.04.52/) | [lastz/lastz](https://github.com/lastz/lastz/tree/1.04.52) |
| jq | 1.7 | MIT (and others, see its `COPYING`); with Oniguruma (2-clause BSD) | [jq/1.7](assets/vendor/biowasm/jq/1.7/) | [jqlang/jq](https://github.com/jqlang/jq/tree/jq-1.7) |
| **GNU coreutils**: `cat comm cut date fold head join md5sum paste seq shuf sort tail tee tr uniq wc` | 8.32 | **GNU GPL 3 or later** | [coreutils/8.32](assets/vendor/biowasm/coreutils/8.32/) | [release source](https://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz), [included](assets/vendor/licenses/sources/) |
| **GNU Awk** (`gawk`, also as `awk`) | 5.1.0 | **GNU GPL 3 or later** | [gawk/5.1.0](assets/vendor/biowasm/gawk/5.1.0/) | [release source](https://ftp.gnu.org/gnu/gawk/gawk-5.1.0.tar.xz), [included](assets/vendor/licenses/sources/) |
| **GNU grep** | 3.7 | **GNU GPL 3 or later** | [grep/3.7](assets/vendor/biowasm/grep/3.7/) | [release source](https://ftp.gnu.org/gnu/grep/grep-3.7.tar.xz), [included](assets/vendor/licenses/sources/) |
| **GNU grep with PCRE2**, for `grep -P` | grep 3.11, PCRE2 10.42 | grep: **GNU GPL 3 or later**; PCRE2: 3-clause BSD with the PCRE2 exemption (`PCRE2-LICENCE`) | [grep/3.11](assets/vendor/biowasm/grep/3.11/) | [grep release source](https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz), [PCRE2 release source](https://github.com/PCRE2Project/pcre2/releases/tag/pcre2-10.42); both [included](assets/vendor/licenses/sources/) |
| **GNU sed** | 4.8 | **GNU GPL 3 or later** | [sed/4.8](assets/vendor/biowasm/sed/4.8/) | [release source](https://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz), [included](assets/vendor/licenses/sources/) |
| **GNU diffutils**: `diff`, `cmp` | 3.10 | **GNU GPL 3 or later** | [diffutils/3.10](assets/vendor/biowasm/diffutils/3.10/) | [release source](https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz); source, patch and build script [included](assets/vendor/licenses/) |
| Biowasm base module and the Aioli runner (`aioli.js`, which includes Comlink) | base 1.0.0; Aioli from the Biowasm CDN, series 3 | MIT. Comlink: Apache 2.0 (Copyright 2019 Google LLC) | [notice and MIT licence](assets/vendor/biowasm/LICENSE.txt); [Apache 2.0](assets/vendor/licenses/Apache-2.0.txt) | [biowasm](https://github.com/biowasm/biowasm), [aioli](https://github.com/biowasm/aioli), [comlink](https://github.com/GoogleChromeLabs/comlink) |

Every `.wasm` file also contains parts of the Emscripten runtime and its C and C++ libraries (musl, libc++, compiler-rt: MIT; Apache 2.0 with LLVM exception), and, where compressed files are read, zlib (HTSlib-based programs also bzip2 and liblzma). The licence texts of these libraries are in [assets/vendor/licenses/runtime-libraries/](assets/vendor/licenses/runtime-libraries/).

**Where the builds came from.** All programs except Bowtie 2, BWA, HISAT2, FreeBayes, `diff` and `cmp`, and the grep that carries out `grep -P` are builds of the [Biowasm](https://biowasm.com) project, downloaded from `https://biowasm.com/cdn/v3/NAME/VERSION/` between 30 September and 10 October 2026 (each `NOTICE.txt` has the date). Bowtie 2, `diff` and `cmp` of GNU diffutils, and GNU grep 3.11 with PCRE2 10.42, were compiled with Emscripten for the course – Bowtie 2 from its release source with a patch for the WebAssembly build (its Makefile; the search runs in the calling thread; a read file that cannot be opened is reported), `cmp` from its release source with a one-line patch, `diff`, grep and PCRE2 from theirs unchanged; they are not Biowasm builds. BWA, HISAT2 and FreeBayes were compiled with Emscripten 3.1.64 by the [genomics-wasm](https://github.com/comparativechrono/genomics-wasm) project (commit `0e5df1fb`; its scripts: MIT), from pinned sources with small portability patches, and checked against native builds of the same sources by its comparison suite; for this site they were linked for the program runner (the `.wasm` files are those that were checked) and FreeBayes was compiled again with its source paths shortened. BWA-MEM2, StringTie, kallisto, mosdepth, featureCounts and Salmon come from the same project (commit `e8c3e15`), compiled with its scripts – with the build machine's folders mapped out of the strings in the programs (`-ffile-prefix-map`, and `--remap-path-prefix` for Salmon's Rust) – and checked with its comparison suites against native builds of the same sources; the first four were linked for the program runner (the `.wasm` files are those that were checked), featureCounts and Salmon, which work on several threads, are used as they were built, in a worker of their own (`assets/js/threads-worker.mjs`, adapted from genomics-wasm's runtime, MIT). Cutadapt, LoFreq, SomaticSniper and Strelka2 come from the same project too (commit `bfacba3`): LoFreq, SomaticSniper and Strelka2 compiled with Emscripten 3.1.64 (again with `-ffile-prefix-map`), Cutadapt's and dnaio's Cython extensions with pyodide-build (Emscripten 5.0.3) for the Pyodide 314.0.7 that comes with them – each checked with the project's comparison suites against native builds of the same sources, Strelka2 also against its own Python 2 workflow. They are used as they were built, each command in a worker of its own (`assets/js/threads-worker.mjs`; Cutadapt: `assets/js/python-worker.mjs`, adapted from genomics-wasm's `runtime/cutadapt-execute.mjs` and `runtime/bracken-execute.mjs`, MIT). The somatic workflows of LoFreq and Strelka2 are Python scripts upstream; genomics-wasm's JavaScript translations of them (`lofreq-somatic.mjs`, MIT; `strelka2-somatic.mjs`, GNU GPL 3 or later) are used unchanged, with a small `index.mjs` of the workbench next to them (the paths of the terminal), and `assets/js/somatic.js` puts them into the terminal: `lofreq somatic`, and Strelka's two steps, `configureStrelkaSomaticWorkflow.py` (with the checks and messages of upstream's configure script) and `RUNDIR/runWorkflow.py`. Because it contains Strelka's help texts and messages, `somatic.js` is under the GNU GPL 3 or later. Kraken2 and Bracken come from the same project as well (commit `ebe3454`): Kraken2's programs and Bracken's `kmer2read_distr` compiled with Emscripten 3.1.64 (with `-ffile-prefix-map`), Bracken's two Python programs unchanged, in the same Pyodide 314.0.7 as Cutadapt – one copy, `assets/vendor/genomics-wasm/pyodide/314.0.7/` – each checked with the project's comparison suite against native builds of the same sources. They run as they were built, each command in a worker of its own (`threads-worker.mjs`; `python-worker.mjs` for the Python programs). Kraken2's Perl and shell scripts and Bracken's shell scripts are not run: `assets/js/metagenomics.js` does what they do – their options, checks, messages and usage texts – with genomics-wasm's `kraken2.mjs` (MIT, unchanged) for Kraken2's programs. Because it contains Bracken's usage texts and messages, `metagenomics.js` is under the GNU GPL 3 or later. Prodigal, HMMER and bustools come from the same project too (commit `46c9418`), compiled with Emscripten 3.1.64 (with `-ffile-prefix-map`) and checked with the project's comparison suites against native builds of the same sources. HMMER's programs were compiled a second time for this site, with one more patch to Easel (`genomics-wasm-build/workbench/hmmer-easel-messages.patch`): Easel takes a program whose parent process is process 1 for a daemon and sends its error messages to the system log, and under Emscripten every program's parent is process 1, so their error messages were lost. They were checked again after it. All three run as they were built, each command in a worker of its own (`threads-worker.mjs`). PLINK 2 comes from the same project too (commit `8eea96b`, its PLINK 2 port `d68433f`): a development version of PLINK 2 of 12 October 2026, built without LAPACK with Emscripten 3.1.64 (with `-ffile-prefix-map`) and checked with the project's comparison suite against the native programs (41 of 41 cases); it runs as it was built, each command in a worker of its own, with threads – which need a cross-origin isolated page. MACS3 comes from the same project too (commit `c977980`, its MACS3 port `1b306c5`): MACS3 3.0.5's Cython and C extensions and hmmlearn 0.3.3's C++ compiled with pyodide-build (Emscripten 5.0.3, with `-ffile-prefix-map`) for the Pyodide 314.0.7 of Cutadapt and Bracken, with Pyodide's own builds of NumPy, SciPy, scikit-learn, pandas, h5py and the other packages it needs, unchanged, next to that Python – checked with the project's comparison suite against MACS3 built for Linux from the same source, unchanged and with the port's changes (39 of 39 cases). It runs in `python-worker.mjs` (adapted from genomics-wasm's `runtime/macs3-execute.mjs`), each command in a worker of its own; after a command, the next command's worker starts its Python in the background. How each was built is in [assets/vendor/licenses/](assets/vendor/licenses/) (`bowtie2-build/`, `diffutils-build/`, `grep-perl-build/`, `genomics-wasm-build/`).

**Local changes** – all listed in [assets/vendor/biowasm/RUNTIME-PATCHES.txt](assets/vendor/biowasm/RUNTIME-PATCHES.txt):

- The JavaScript loaders of the programs record each program's exit status. The Aioli runner has two added methods: `execIO` runs a program with real standard input, output and error – and starts every program afresh for each run, as a process is on Linux –, and `statTree` lists the shared file system in one answer; [execio-source.txt](assets/vendor/biowasm/execio-source.txt) is their readable source.
- In each of the 17 **coreutils** programs and in **grep** 3.7, **one byte** of the `.wasm` file is changed, which makes the C library's standard output unbuffered. Unchanged, these builds lose output that does not end with a newline (`tr`, `head -c`, `fold` …; `grep -lZ`, `grep -z`). The byte, the reason and the checksums of the files as downloaded are in the [coreutils notice](assets/vendor/biowasm/coreutils/8.32/NOTICE.txt) and the [grep notice](assets/vendor/biowasm/grep/3.7/NOTICE.txt); the script that makes the change is [unbuffer-stdout.py](assets/vendor/licenses/local-patches/unbuffer-stdout.py).
- In the loaders of **date** and **gawk** the day of the year is counted in calendar days ([fix-day-of-year.py](assets/vendor/licenses/local-patches/fix-day-of-year.py)): as downloaded, `date -d 2024-07-15` printed “invalid date” in zones with summer time.
- All other `.wasm` and `.data` files from Biowasm are unmodified.

**Source code of the GPL and MPL programs.** [assets/vendor/licenses/](assets/vendor/licenses/) – see its [README.txt](assets/vendor/licenses/README.txt) – holds:

- the full text of the GPL version 3 ([GPL-3.0.txt](assets/vendor/licenses/GPL-3.0.txt)) and of the Apache License 2.0 ([Apache-2.0.txt](assets/vendor/licenses/Apache-2.0.txt), for Comlink);
- the release sources of Bowtie 2, Kalign, FastTree, the five GNU packages (coreutils, diffutils, gawk, grep 3.7 and 3.11, sed) and PCRE2 10.42, of BWA, HISAT2, FreeBayes (with all its submodules), featureCounts (Subread) with zlib 1.3.1 and SIMDe 0.8.2, Strelka2, Bracken and Prodigal, of PLINK 2 (with zlib 1.3.2), of Pyodide 314.0.7 and hiwire (Mozilla Public License 2.0, for the Python of Cutadapt, Bracken and MACS3) and of Pyodide's recipes for the packages that MACS3 uses (pyodide-recipes 314-20260911, the same licence), of bustools (for the Eigen in it, under the Mozilla Public License 2.0), and of the R package locfit, in [sources/](assets/vendor/licenses/sources/), with origins and SHA-256 values in [source-archives.json](assets/vendor/licenses/source-archives.json);
- for Bowtie 2, `diff` and `cmp`, the grep that carries out `grep -P`, BWA, BWA-MEM2, HISAT2, FreeBayes, featureCounts, StringTie, kallisto, Salmon, mosdepth, Cutadapt (with its Python runtime), MACS3 (with hmmlearn), LoFreq, SomaticSniper, Strelka2, Kraken2, Bracken, Prodigal, HMMER, bustools, PLINK 2 and locfit: the build scripts, patches and instructions (the programs that are not GPL point to their pinned upstream archives, with SHA-256 values, in the lock files there);
- for the Biowasm builds: the recipes (scripts and patches) of the programs used here, from one pinned commit ([`97bb232`](https://github.com/biowasm/biowasm/tree/97bb23225892ba5cc59ba0deac8b212b957db66a)), in [biowasm-build/](assets/vendor/licenses/biowasm-build/), listed with checksums in [biowasm-build-manifest.json](assets/vendor/licenses/biowasm-build-manifest.json). The commit and toolchain of the original CDN builds are not known, so this is a pinned recipe for inspection and rebuilding, **not** a claim that rebuilding gives identical binaries;
- the licence texts of the libraries inside the programs (Emscripten's runtime, musl, LLVM's libraries, zlib, bzip2, liblzma) in [runtime-libraries/](assets/vendor/licenses/runtime-libraries/);
- the scripts of the local changes to downloaded files in [local-patches/](assets/vendor/licenses/local-patches/).

The GPL's terms for distributing compiled programs and their Corresponding Source are in its section 6. Whoever hosts this site should keep `assets/vendor/licenses/` and this file with it. Copyright statements of the programs and of the code they include remain in their source releases; a licence label in the table above does not replace the notices in individual source files.

## JavaScript libraries (bundled)

| Library | Version | Licence | Files |
| --- | --- | --- | --- |
| NGL Viewer (the 3D viewer; includes three.js r158, MIT; chroma.js 1.4.1, 3-clause BSD, with the ColorBrewer colours, Apache 2.0; JS Signals and a k-d tree, MIT) | 2.5.0 | MIT | [assets/vendor/ngl/LICENSE](assets/vendor/ngl/LICENSE), [THIRD-PARTY-NOTICES.txt](assets/vendor/ngl/THIRD-PARTY-NOTICES.txt) |
| igv.js (the genome browser; includes pako, MIT and zlib) | 3.8.9 | MIT | [assets/vendor/igv/LICENSE](assets/vendor/igv/LICENSE) |
| Cytoscape.js (the Networks tab; the npm build, unchanged) | 3.34.3 | MIT | [LICENSE-cytoscape.txt](assets/vendor/cytoscape/LICENSE-cytoscape.txt), [NOTICE.txt](assets/vendor/cytoscape/NOTICE.txt) |
| – its layouts: cytoscape-fcose 2.2.0 with cose-base 2.2.0 and layout-base 2.0.1 (iVis@Bilkent); cytoscape-dagre 4.0.1, which includes dagre 3 and graphlib 4 (dagrejs) | as listed | MIT | [LICENSE-cytoscape-fcose.txt](assets/vendor/cytoscape/LICENSE-cytoscape-fcose.txt), [LICENSE-cose-base.txt](assets/vendor/cytoscape/LICENSE-cose-base.txt), [LICENSE-layout-base.txt](assets/vendor/cytoscape/LICENSE-layout-base.txt), [LICENSE-cytoscape-dagre.txt](assets/vendor/cytoscape/LICENSE-cytoscape-dagre.txt), [LICENSE-dagre.txt](assets/vendor/cytoscape/LICENSE-dagre.txt), [LICENSE-graphlib.txt](assets/vendor/cytoscape/LICENSE-graphlib.txt) |
| CodeMirror 5 (editors, with the Python, R, YAML, shell, Markdown and JavaScript modes and nine add-ons: closebrackets, comment, matchbrackets, overlay, multiplex, yaml-frontmatter, searchcursor, active-line, runmode) | 5.65.18 | MIT | [assets/vendor/codemirror/LICENSE](assets/vendor/codemirror/LICENSE) |
| – `rmarkdown.js`, the mode for R Markdown and Quarto documents in RStudio (IDE tab), written for the workbench from CodeMirror's modes and add-ons | | MIT | [assets/vendor/codemirror/rmarkdown.js](assets/vendor/codemirror/rmarkdown.js) |
| pyflakes (code analysis in Spyder, IDE tab; the wheel from PyPI, unchanged, loaded into Spyder's Python) | 4.0.3 | MIT | [assets/vendor/pyflakes/LICENSE.txt](assets/vendor/pyflakes/LICENSE.txt) |
| marked (Markdown in notebooks and AI answers) | 18.0.13 | MIT | [assets/vendor/marked/LICENSE](assets/vendor/marked/LICENSE) |
| DOMPurify (cleans formatted text before display) | 3.4.16 | Apache 2.0 or MPL 2.0 | [assets/vendor/dompurify/LICENSE](assets/vendor/dompurify/LICENSE) |
| JSZip (zip files; includes pako) | 3.10.1 | MIT or GPL v3 (pako: MIT) | [assets/vendor/jszip/LICENSE.markdown](assets/vendor/jszip/LICENSE.markdown) |
| PDF.js (PDF files in the Files tab; the legacy build of the npm package pdfjs-dist, unchanged) | 6.3.289 | Apache 2.0 | [assets/vendor/pdfjs/LICENSE](assets/vendor/pdfjs/LICENSE), [README.txt](assets/vendor/pdfjs/README.txt) |
| – with it: the Foxit standard fonts (BSD), Adobe's CMaps (BSD), OpenJPEG (BSD 2-clause), PDFium's JBIG2 decoder (BSD 3-clause), qcms (MIT), a CMYK profile (CC0); the Liberation Sans fonts of the package are left out (GPL 2 with a font exception) | | as listed | [standard_fonts/LICENSE_FOXIT](assets/vendor/pdfjs/standard_fonts/LICENSE_FOXIT), [cmaps/LICENSE](assets/vendor/pdfjs/cmaps/LICENSE), [wasm/](assets/vendor/pdfjs/wasm/), [iccs/LICENSE](assets/vendor/pdfjs/iccs/LICENSE) |
| Viz.js (Graphviz for `dot` and `snakemake --dag \| dot`) | 3.31.0 | MIT | [assets/vendor/viz/LICENSE](assets/vendor/viz/LICENSE), [NOTICE](assets/vendor/viz/NOTICE.txt) |
| – Graphviz, compiled into Viz.js | 16.1.0 | Eclipse Public License 1.0 | [GRAPHVIZ-EPL-1.0.txt](assets/vendor/viz/GRAPHVIZ-EPL-1.0.txt); [source](https://gitlab.com/graphviz/graphviz/-/tree/16.1.0) |
| – Expat, compiled into Viz.js | 2.8.5 | MIT | [EXPAT-COPYING.txt](assets/vendor/viz/EXPAT-COPYING.txt); [source](https://github.com/libexpat/libexpat/releases/tag/R_2_8_5) |

## R packages (bundled)

| Package | Version | Licence | Files | Source |
| --- | --- | --- | --- | --- |
| **locfit** (local regression; DESeq2 and edgeR need it) – built for webR 0.6.0 (R 4.6.0) with genomics-wasm's recipe in the pinned webR build image | 1.5-9.12 | **GNU GPL 2 or later** | [assets/vendor/r-packages/](assets/vendor/r-packages/) ([README.txt](assets/vendor/r-packages/README.txt)) | [CRAN](https://cran.r-project.org/package=locfit), [included](assets/vendor/licenses/sources/); recipe in [genomics-wasm-build/](assets/vendor/licenses/genomics-wasm-build/) |

## Loaded at run time, not bundled

- **Pyodide 0.29.5** (MPL 2.0) – CPython 3.13 compiled to WebAssembly – is downloaded by the student's browser from the jsDelivr CDN (`https://cdn.jsdelivr.net/pyodide/v0.29.5/full/`) when a Python notebook is open (the page opens the last notebook the student had open, a Python one on the first visit), and then taken from the browser's cache. It provides CPython 3.13.2 (PSF licence) and the Pyodide builds of NumPy, pandas, Matplotlib, Biopython, SciPy, scikit-learn and the other packages a notebook imports, each under its own licence (see the [Pyodide package list](https://pyodide.org/en/stable/usage/packages-in-pyodide.html)). Packages installed with `%pip` come from PyPI. Spyder in the IDE tab runs the same Pyodide in a worker of its own, with Pyodide's builds of IPython 9 (BSD 3-Clause; its console) and jedi with parso (MIT; completion in its Editor).
- **webR 0.6.0** – R 4.6.0 compiled to WebAssembly – is downloaded from `https://webr.r-wasm.org/v0.6.0/` when an R notebook is open, R is first used in the terminal, or RStudio is opened in the IDE tab. The webR binaries are distributed under the GNU GPL 3 (R itself: GNU GPL 2 and 3); webR's JavaScript is MIT-licensed ([webR's licence notes](https://github.com/r-wasm/webr/blob/main/LICENSE.md)). R packages come from the site itself (locfit, above), the webR repository (`repo.r-wasm.org`) and r-universe (`bioc-release.r-universe.dev` – the current Bioconductor release, with DESeq2 (LGPL 3 or later) and edgeR (GPL 2 or later) –, `cran.r-universe.dev`, with downloads from `r2.ropensci.org`), each under its own licence.
- The **hosted genomes** of the genome browser are listed by the IGV team (`igv.org`), and their files come from there and from UCSC (`hgdownload.soe.ucsc.edu`, or its copy `genome-browser.s3.us-east-1.amazonaws.com`); **structures** from RCSB PDB and AlphaFold DB; the **Databases** tab, the **Networks** tab and code in notebooks use public web services (EMBL-EBI – IntAct among them –, NCBI, RCSB PDB, UCSC, STRING, Reactome, NDEx, g:Profiler), each under its own terms of use; a network opened from NDEx comes with its own licence, shown in the list.
- The **AI assistant** sends a student's messages – and the agent its commands and their output – to the AI service the student chose, with the student's own key. No AI model or service is part of the site.

## Re-implementations written for the course

These files contain no code from the programs they imitate. Their names, options and messages follow the real programs, so that what students learn transfers:

| File | Imitates | Licence of the real program |
| --- | --- | --- |
| `assets/py/smk.py` | [Snakemake](https://snakemake.github.io) 9.27 (the commonly used core) | MIT |
| `assets/js/galaxy.js` | the [Galaxy](https://galaxyproject.org) interface, histories, workflow editor and `.ga` workflow format; tool IDs name real Galaxy Tool Shed tools | MIT (since Galaxy release 26.0, 2026; before, the Academic Free License 3.0) |
| `assets/js/rstudio.js`, `rsource.js`, `rui.js`, `knit.js`, `rsession.js`, `dataview.js`, `shiny.js`, `shiny-socket.js`, `assets/css/rstudio.css`, `r.css` | the [RStudio](https://posit.co/products/open-source/rstudio/) IDE (Posit) – its panes, menus, keys and dialogs, and the way it runs scripts, chunks and documents; knitting follows knitr and R Markdown. Shiny apps reach their R in the way that [Shinylive](https://github.com/posit-dev/shinylive)'s do (Posit; its service worker and message ports – written again here, in `shiny.js`, `shiny-socket.js` and the Shiny part of `isolation-sw.js`: [shinylive-MIT.txt](assets/vendor/licenses/shinylive-MIT.txt)). Not RStudio, and not made or endorsed by Posit | RStudio: GNU AGPL 3; Shinylive: MIT |
| `assets/js/spyder.js`, `spyder-panes.js`, `pyide.js`, `py-ide-worker.js`, `assets/py/wb_ide.py`, `assets/css/spyder.css` | the [Spyder](https://www.spyder-ide.org) IDE 6 – its layout, dark theme, menus, keys and panes, and the magics that its Run and Debug commands type into the console (`%runfile`, `%runcell`, `%debugfile`, `%debugcell`); the console itself is IPython. Not Spyder, and not made or endorsed by the Spyder project | MIT |
| `assets/js/networks.js`, `net-algo.js`, `net-io.js` | the desktop program [Cytoscape](https://cytoscape.org) and the apps whose analyses the Networks tab offers – NetworkAnalyzer, cytoHubba, clusterMaker2 (MCODE, MCL) – computed as they compute them (checked against independent implementations, see the help page *Network analysis*); Cytoscape's file formats (XGMML, Cytoscape JSON, CX2) | Cytoscape: LGPL 2.1; the apps: each its own |

## Data

| Data (`data/examples/`) | Source | Terms |
| --- | --- | --- |
| `reads/NA12878_R1.fastq`, `_R2.fastq` | NA12878 exome reads (run SRR098401), from the [1000 Genomes phase 3 exome alignment](https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/NA12878/exome_alignment/) of NA12878, for two regions of chromosome 10 | open data of the 1000 Genomes Project, distributed by the International Genome Sample Resource ([IGSR disclaimer](https://www.internationalgenome.org/IGSR_disclaimer)); NA12878 is the widely used public reference sample (Coriell cell line GM12878) |
| `reads/reference.fa` (+ `.fai`) | two slices of the UCSC hg19 human reference (chr10) | [UCSC Genome Browser conditions of use](https://genome.ucsc.edu/conditions.html) |
| `variants/NA12878.calls.vcf.gz` (+ `.tbi`) | called from those reads with bcftools 1.10 | made for the course |
| `annotation/` | genes, transcripts and exons of the two slices, from Ensembl (GRCh37) | [Ensembl: no restrictions on use](https://www.ensembl.org/info/about/legal/disclaimer.html) |
| `sequences/pBR322.fasta` | the cloning vector pBR322, GenBank J01749.1 (Sutcliffe, 1979) | NCBI GenBank |
| `sequences/myoglobins.fasta`, `unknown_myoglobin.fasta` | myoglobin sequences from UniProt (horse P68082 and carp P02204 among them), as used in the course | UniProt: CC BY 4.0 |
| `sequences/tRNA-Thr.afa` | six human threonine tRNAs (named as in GtRNAdb), aligned, as used in the course | – |
| `tables/yeast_genes.csv` | 5,481 yeast genes: SGD, PaxDb v6.1, BioGRID 5.0.261, UniProt 2026_03, AlphaFold DB (downloaded 30 September 2026) | SGD, UniProt and AlphaFold DB: CC BY 4.0; BioGRID: MIT; PaxDb: see pax-db.org |
| `structures/1mbn.pdb` | sperm whale myoglobin, RCSB PDB 1MBN | PDB data: CC0 |
| `rnaseq/yeast_chrI.fa` (+ `.fai`), `yeast_chrI.gtf`, `yeast_chrI.splice_sites.tsv`, `SRR6357070_1.fastq`, `_2.fastq` | chromosome I of yeast (R64-1-1), its Ensembl genes and introns, and 256 pairs of RNA-seq reads of SRA run SRR6357070 (GSE110004; Wu et al. 2018), from [nf-core/test-datasets](https://github.com/nf-core/test-datasets/tree/cad884e7fbe5617dcd55bdd07d9ddf65b54febe4), selected by the genomics-wasm project | nf-core/test-datasets: MIT ([notice](data/examples/rnaseq/NOTICE.txt)); the reads are public INSDC data |
| `rnaseq/airway_counts.tsv`, `airway_samples.tsv` | the gene counts and samples of the Bioconductor package [airway](https://bioconductor.org/packages/airway) 1.26.0 (Himes et al., PLoS ONE 2014; GEO GSE52778), unchanged | LGPL ([notice](data/examples/rnaseq/NOTICE.txt)) |
| `trimming/SRR6357070_adapters_1.fastq`, `_2.fastq` | 384 pairs of reads of the same yeast run SRR6357070 that run into the adapter, from [nf-core/test-datasets](https://github.com/nf-core/test-datasets/tree/cad884e7fbe5617dcd55bdd07d9ddf65b54febe4) by way of the test data of genomics-wasm | nf-core/test-datasets: MIT ([notice](data/examples/trimming/NOTICE.txt)); the reads are public INSDC data |
| `somatic/tumor.bam`, `normal.bam` (+ `.bai`), `reference.fa` (+ `.fai`), `truth.vcf`, `regions.bed` (+ `.gz`, `.tbi`) | reads of the cell lines HCC1395 (breast cancer) and HCC1395BL (B lymphocytes of the same donor) sequenced by the SEQC2 consortium (NCBI study SRP162370), those of two windows of chromosome 21, moved onto the windows; the windows of GRCh38 from UCSC (hg38); the records of the SEQC2 high-confidence somatic truth set v1.2.1 in them (Fang et al., Nature Biotechnology 2021) – prepared by the genomics-wasm project | publicly distributed research data of the SEQC2 consortium ([notice](data/examples/somatic/NOTICE.txt)); UCSC: [conditions of use](https://genome.ucsc.edu/conditions.html) |
| `metagenomics/reads_1.fastq.gz`, `reads_2.fastq.gz`, `db/` | the first 4,096 read pairs of ENA run ERR2984773 – a mock microbial community, the ZymoBIOMICS Microbial Community DNA Standard (Nicholls et al., GigaScience 2019) – and a small Kraken2 database: the first megabase of three bacterial chromosomes from NCBI RefSeq (E. coli K-12 MG1655, Salmonella Typhimurium LT2, Shigella flexneri 2a 301) with their NCBI Taxonomy lineages, built with Kraken2 2.17.2 and Bracken 3.1 – prepared by the genomics-wasm project | the reads are public INSDC data ([notice](data/examples/metagenomics/NOTICE.txt)); NCBI RefSeq and Taxonomy: public, see NCBI's [policies](https://www.ncbi.nlm.nih.gov/home/about/policies/) |
| `bacteria/ecoli.fna`, `salmonella.fna`, `combined.fna` | the first 60,000 bases of the chromosomes of *Escherichia coli* K-12 MG1655 (NC_000913.3) and *Salmonella enterica* Typhimurium LT2 (NC_003197.2), from NCBI RefSeq, and both together – the windows chosen by the genomics-wasm project for testing Prodigal | NCBI RefSeq: public, see NCBI's [policies](https://www.ncbi.nlm.nih.gov/home/about/policies/) ([notice](data/examples/bacteria/NOTICE.txt)) |
| `hmmer/` | the tutorial files of HMMER 3.4, unchanged and under their own names: alignments and profiles of globins, of Pfam's fn3 and Pkinase families and of Dfam's MADE1, the UniProt record 7LESS_DROME, globin sequences and 330 kb of human chromosome 1 | HMMER's BSD licence ([LICENSE](data/examples/hmmer/LICENSE), [notice](data/examples/hmmer/NOTICE.txt)); Pfam and Dfam: CC0; UniProt: CC BY 4.0 |
| `singlecell/` | single-cell RNA-seq of mouse cells (10x Chromium v2, SRA run SRR8599150): 2,500 read pairs and a small BUS file with its reference (test files of [kb_python](https://github.com/pachterlab/kb_python)), a gene map, a part of the barcode list, and in `large/` 10,235 corrected and sorted records of 358 barcodes from the BUStools [getting_started](https://github.com/BUStools/getting_started/releases/tag/getting_started) release – prepared by the genomics-wasm project | the reads are public INSDC data; kb_python: BSD 2-Clause ([LICENSE.kb_python](data/examples/singlecell/LICENSE.kb_python), [notice](data/examples/singlecell/NOTICE.txt)) |
| `plink2/` | the genotypes of the 2,504 people of the 1000 Genomes Project, Phase 3, at the first 600 variants of chromosome 21 – the test file of [PLINK 2](https://github.com/chrchang/plink-ng/tree/72119068234ce0acf7189e53dfe67a527bc53e2c/2.0/Tests/TEST_PHASED_VCF), unchanged – with 48 of its sample IDs and made-up weights for `--score`; and synthetic genotypes, phenotypes and covariates of 603 invented people from PLINK 2's tests – prepared by the genomics-wasm project | 1000 Genomes: open data, to be cited (The 1000 Genomes Project Consortium, Nature 2015; [IGSR](https://www.internationalgenome.org/IGSR_disclaimer/)); PLINK 2's test recipes: GNU GPL 3 or later ([notice](data/examples/plink2/NOTICE.txt)) |
| `networks/` | `airway_deseq2.csv`: DESeq2's results for the airway counts above, made in the workbench by the RNA-seq recipe; `airway_string_nodes.tsv`, `airway_string_network.tsv`: the answers of [STRING](https://string-db.org) 12.5's API (13 October 2026) for the genes it found changed – 357 proteins, 512 associations; `karate_club.graphml`: Zachary's karate club (Zachary 1977), as NetworkX 3.4.2 has it | STRING: CC BY 4.0, to be cited (Szklarczyk et al., Nucleic Acids Research 2025); airway: LGPL; NetworkX: BSD 3-Clause ([notice](data/examples/networks/NOTICE.txt)) |
| `chipseq/` | the test data of [MACS](https://github.com/macs3-project/MACS/tree/v3.0.5/test), unchanged and under their own names: reads of a ChIP-seq of CTCF and of its control on human chromosome 22 (hg19), single-end (BED) and as fragments (BEDPE), and the peaks MACS's test of `callpeak` expects | MACS: BSD 3-Clause ([LICENSE.MACS3](data/examples/chipseq/LICENSE.MACS3), [notice](data/examples/chipseq/NOTICE.txt)); the test data has no licence of its own |
| `atacseq/` | the 5,771 fragments on chromosome I of MACS's ATAC-seq test file of yeast – SRA run SRR1822137 (Schep et al., Genome Research 2015) – kept as they are, in their order | MACS: BSD 3-Clause ([LICENSE.MACS3](data/examples/atacseq/LICENSE.MACS3), [notice](data/examples/atacseq/NOTICE.txt)); SRA data: public |

How the reads and reference were extracted – URLs, hashes, counts and limitations – is recorded in [data/examples/reads/provenance.json](data/examples/reads/provenance.json), the RNA-seq files in [data/examples/rnaseq/provenance.json](data/examples/rnaseq/provenance.json), the reads with adapters in [data/examples/trimming/provenance.json](data/examples/trimming/provenance.json), the tumour and normal data in [data/examples/somatic/provenance.json](data/examples/somatic/provenance.json) the metagenomic reads and database in [data/examples/metagenomics/provenance.json](data/examples/metagenomics/provenance.json), and the bacterial windows, HMMER's files, the single-cell data, the genotypes for PLINK 2, the networks and the reads of ChIP-seq and ATAC-seq in the `provenance.json` of `bacteria/`, `hmmer/`, `singlecell/`, `plink2/`, `networks/`, `chipseq/` and `atacseq/`; [data/examples/README.md](data/examples/README.md) describes every file. The reads are real sequencing data; none are simulated (the files of `plink2/` whose names begin with `synthetic_` are made up, as their names say).
