Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
c388ef9
Release moddotplot-rs v0.1.0
aphillippy Aug 29, 2026
7695b31
Prepare moddotplot-rs v0.2.0 beta implementation
aphillippy Aug 29, 2026
32d0d9a
Record v0.2.0 beta validation evidence
aphillippy Aug 29, 2026
0220ade
Fix isolated reproducibility build directories
aphillippy Aug 29, 2026
795c7b7
Finalize local beta release tooling and checklist
aphillippy Aug 29, 2026
e9be920
Release moddotplot-rs v0.2.0-beta.2
aphillippy Aug 29, 2026
7aa2aa3
Release moddotplot-rs v0.2.0-beta.3
aphillippy Aug 29, 2026
24fcf61
Release moddotplot-rs v0.2.0-beta.4
aphillippy Aug 29, 2026
fd7be9a
Stabilize midpoint-based track reordering
aphillippy Aug 29, 2026
1899a5f
Require full track clearance before reordering
aphillippy Aug 29, 2026
ce4a492
Restore midpoint reordering and refine landing copy
aphillippy Aug 29, 2026
5d5f500
Clarify landing file picker copy
aphillippy Aug 29, 2026
fe62a08
Shorten spectral palette label
aphillippy Aug 29, 2026
7239674
Release moddotplot-rs v0.2.0
aphillippy Aug 29, 2026
c3185e3
Align documentation with v0.2.0
aphillippy Aug 30, 2026
f867593
Release moddotplot-rs v0.2.1
aphillippy Aug 30, 2026
1c741f8
Release moddotplot-rs v0.3.0
aphillippy Aug 30, 2026
c9fbe7e
release: retain v0.4.0 orchestration hardening
aphillippy Aug 30, 2026
eb66c30
Release v0.5.0 scheduler and scientific validation
aphillippy Aug 30, 2026
ef9bcbb
Expose optional sparse window correction
aphillippy Aug 30, 2026
e898010
Release v0.6.0 cleanup and export usability
aphillippy Aug 30, 2026
aa10328
Release v0.6.1 documentation corrections
aphillippy Aug 30, 2026
fe05dfe
Release v0.6.2 export and presentation usability
aphillippy Aug 30, 2026
793a8b4
Restore pre-takeover Git history
alexsweeten Oct 11, 2026
aab3443
Restore contributing guide and version changelog
alexsweeten Oct 11, 2026
40aef56
Release ModDotPlot Browser v1.0.1
alexsweeten Oct 11, 2026
0b8e194
Allow compressed annotations from Add track
alexsweeten Oct 11, 2026
7ac9573
Stream remote FASTA URLs in browser
alexsweeten Oct 11, 2026
fbf164f
Use remote FASTA indexes for streaming
alexsweeten Oct 11, 2026
5dd7597
Stream Arabidopsis example from GitHub
alexsweeten Oct 11, 2026
ea8727d
Fix FASTA error assertion in browser tests
alexsweeten Oct 11, 2026
33c61dd
release: prepare v1.0.2
alexsweeten Oct 12, 2026
dbc3531
docs: refresh user guide screenshots
alexsweeten Oct 12, 2026
aa81c74
feat: load multiple genomes from URLs
alexsweeten Oct 12, 2026
b6a7490
fix: finalize config export and user guide
alexsweeten Oct 12, 2026
c4469f7
Update user guide with CLI instructions
alexsweeten Oct 12, 2026
8b65288
Potential fix for pull request finding 'Include the missing FASTA opt…
alexsweeten Oct 12, 2026
3f746a3
Potential fix for pull request finding 'Fix changelog release baselin…
alexsweeten Oct 12, 2026
1690d42
Potential fix for pull request finding 'Reset stale hover state when …
alexsweeten Oct 12, 2026
cd38bbe
Potential fix for pull request finding 'Distinguish missing identity …
alexsweeten Oct 12, 2026
47b9ab1
Potential fix for pull request finding 'Clear cached hover when the c…
alexsweeten Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
/node_modules/
/web/dist/
/web/node_modules/
/web/public/examples/Col-CEN_v1.2.fasta
/web/src/wasm/
/web/playwright-report/
/web/test-results/
Expand Down
826 changes: 826 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ message: >-
preferred citation and credit the relevant method papers listed in references.
title: "ModDotPlot Browser"
type: software
version: 1.0.0
date-released: 2026-10-04
version: 1.0.2
date-released: 2026-10-11
repository-code: "https://github.com/marbl/ModDotPlot-Browser"
license: MIT-0
abstract: >-
Expand Down
92 changes: 92 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Contributing to ModDotPlot Browser

> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

Thank you for improving ModDotPlot Browser. Correct and reproducible scientific output is
the project's first priority, followed by interactive performance and maintainability.

Start with the [methods reference](docs/METHODS.md), the
[release checklist](docs/RELEASE_CHECKLIST.md), and the
[user guide](docs/USER_GUIDE.md).

## Development environment

Use the versions pinned by `rust-toolchain.toml`, `.node-version`, `web/package.json`,
and both lockfiles. Install `wasm-pack`, then run:

```sh
npm --prefix web ci
npm --prefix web run dev
```

The browser bundle uses only static assets and browser APIs at runtime.

## Before submitting a change

```sh
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo check -p moddotplot-wasm --target wasm32-unknown-unknown
npm --prefix web run verify
```

Keep changes modular, document public Rust APIs, and add focused unit tests for both
successful and erroneous input. Avoid unrelated formatting or generated-file changes.

## Scientific changes

A change is scientific if it affects sequence normalization, coordinates, hashing,
sketches, cardinality, containment, ANI conversion, strand evidence, sparse correction,
matrix boundaries, exact mode, missing values, or numeric tile contents.

Scientific changes must:

1. State the invariant or estimator being changed.
2. Add or update a simple exact/scalar reference implementation when possible.
3. Differentially test optimized output against that reference.
4. Include ambiguity, short-range, low-complexity, reverse-complement, and boundary
cases relevant to the change.
5. Quantify approximation error and performance when an estimator changes.
6. Update `docs/METHODS.md`, `docs/RELEASE_CHECKLIST.md`, the user guide, and the
changelog when the decision is durable.

Never loosen a correctness threshold to make an optimization pass without documenting
and scientifically justifying the changed error model.

The production backend is ntHash2 plus undensified OPH verified winners and HLL p10.
Exact canonical k-mer containment is the scientific oracle. Rejected minmer, bottom-s,
alternate-hash, densified, and inverted implementations are historical only and must
not be restored to the production surface without a reviewed ADR and new validation.

## Browser and renderer changes

Preserve the numeric tile contract and keep coloring in the renderer. Tile keys must
include every parameter that can change numeric output. A newly selected generation
must not accept stale tiles, and detailed computation must not delay presentation of a
complete quick viewport.

Test pure TypeScript state and parsing logic outside WebGL where possible. Renderer
changes should be manually checked in all supported desktop browser families until the
automated visual matrix is complete. Inspect pan, zoom, reset, resize, cache eviction,
self-comparison symmetry, exact zoom, and both color modes.

## Performance work

Benchmark the exact workload affected by the change. Report hardware, browser or
native target, build profile, input, parameters, elapsed time, and peak memory where
available. Keep raw machine-readable results beside the Markdown interpretation under
`docs/benchmarks/`.

An optimization is acceptable only after its numeric output passes the relevant
reference and statistical gates.

## Documentation and release notes

Update [CHANGELOG.md](CHANGELOG.md) for user-visible changes. Documentation should call
zero-based and one-based coordinates explicitly, distinguish exact from estimated
values, and avoid claiming research validation until the gates in
[release checklist](docs/RELEASE_CHECKLIST.md) are complete.

ModDotPlot Browser is MIT-0 licensed. By contributing, you agree that your contribution is
provided under that license.
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = ["crates/core", "crates/wasm"]
resolver = "2"

[workspace.package]
version = "1.0.0"
version = "1.0.2"
edition = "2024"
license = "MIT-0"
repository = "https://github.com/marbl/ModDotPlot-Browser"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

**Live application:** [marbl.github.io/ModDotPlot-Browser](https://marbl.github.io/ModDotPlot-Browser/)

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. It is intended to be used for exploratory purposes only. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

## Documentation

Expand Down
2 changes: 1 addition & 1 deletion SBOM.cdx.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"component": {
"type": "application",
"name": "moddotplot-interactive",
"version": "1.0.0",
"version": "1.0.2",
"licenses": [
{
"license": {
Expand Down
Binary file removed assets/example-data/Col-CEN_v1.2.fasta.gz
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/CITATIONS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Citations

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

## Preferred citation

Expand Down
22 changes: 10 additions & 12 deletions docs/DEPLOYMENT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Local installation and HPC deployment

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

`ModDotPlot Browser` is a static Rust/WebAssembly web application. After it has been
built, it does not require an application server or database. A web server only
Expand Down Expand Up @@ -124,9 +124,8 @@ The deployable website is written to:
web/dist/
```

The build also runs the TypeScript tests, prepares the bundled *Arabidopsis thaliana*
example, generates the WebAssembly bindings, checks the documentation contracts, and
updates the software dependency inventory.
The build also runs the TypeScript tests, generates the WebAssembly bindings, checks
the documentation contracts, and updates the software dependency inventory.

### 5. Launch locally

Expand Down Expand Up @@ -261,24 +260,24 @@ Package the generated static site:

```bash
tar -C web/dist \
-czf moddotplot-browser-v1.0.0-dist.tar.gz \
-czf moddotplot-browser-v1.0.2-dist.tar.gz \
.
```

Copy it to the HPC system:

```bash
scp moddotplot-browser-v1.0.0-dist.tar.gz \
scp moddotplot-browser-v1.0.2-dist.tar.gz \
USER@login.cluster.example.edu:/path/to/destination/
```

On the HPC system:

```bash
mkdir -p /path/to/moddotplot-browser-v1.0.0
mkdir -p /path/to/moddotplot-browser-v1.0.2

tar -xzf /path/to/destination/moddotplot-browser-v1.0.0-dist.tar.gz \
-C /path/to/moddotplot-browser-v1.0.0
tar -xzf /path/to/destination/moddotplot-browser-v1.0.2-dist.tar.gz \
-C /path/to/moddotplot-browser-v1.0.2
```

The extracted directory is the complete static website. It can be published through
Expand Down Expand Up @@ -423,12 +422,11 @@ The static server should:
- Serve `.wasm` files using the MIME type `application/wasm`.
- Support HTTP byte-range requests.
- Preserve `Range`, `Content-Range`, and `Content-Length` headers.
- Serve bundled `.gz` files as binary files without automatically adding a
`Content-Encoding` header.
- Permit JavaScript module workers.
- Use HTTPS for a remotely shared deployment.

Byte-range support is important for indexed access to the bundled example FASTA.
The example button streams Col-CEN from GitHub, so deployed pages must allow outbound
HTTPS requests to that host through their Content Security Policy.

### Open OnDemand

Expand Down
8 changes: 4 additions & 4 deletions docs/METHODS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Methods

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

## How the algorithm works

Expand Down Expand Up @@ -165,9 +165,9 @@ At this resolution:
- Reverse-complement matches produce reverse diagonals.
- Reverse-complement-palindromic *k*-mers have neutral direction evidence.

The default exact view colors matches by the corresponding base from the X sequence.
An identity-colored exact view is also available. Changing exact-view colors does not
change the underlying exact match matrix.
The exact view colors matches by the corresponding base from the X sequence. Exact
containment values remain part of the scientific provenance, but the redundant
identity-colored exact display is not exposed.

## How this differs from the published ModDotPlot algorithm

Expand Down
15 changes: 12 additions & 3 deletions docs/PRIVACY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Privacy and local data handling

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

ModDotPlot Browser is designed to process genomic data locally in the user's browser.

Expand All @@ -10,6 +10,9 @@ The current application:

* reads FASTA, FAI, GZI, BED, GFF3, and GTF files, including gzip- and BGZF-compressed
sequence and annotation versions where supported, through browser file APIs;
* can, only when a user submits a URL, fetch an HTTPS FASTA or FASTA.gz response
directly from that remote host and stream it through the local parser, including
adjacent FAI/GZI indexes and bounded byte ranges when the host provides them;
* parses and sketches sequences in a dedicated Web Worker and WebAssembly instance;
* renders numeric results through WebGL2;
* makes no application API calls;
Expand All @@ -20,8 +23,14 @@ The current application:
The built application is a set of static files. It still requires HTTP or HTTPS
hosting because browsers restrict module workers and WebAssembly on `file://` pages.
The hosting provider can observe normal requests for the application files, including
IP address and browser metadata according to that provider's policy. Loaded genomic
files are not part of those requests.
IP address and browser metadata according to that provider's policy. Locally selected
genomic files are not part of those requests.

For a user-requested URL import, the remote data host receives a normal browser GET
request and can observe request metadata such as IP address and browser headers under
that host's policy. ModDotPlot Browser omits credentials and referrer information from
this request, does not proxy the sequence through the application host, and does not
send the parsed sequence elsewhere. The host must permit cross-origin requests (CORS).

## Memory and lifetime

Expand Down
12 changes: 7 additions & 5 deletions docs/RELEASE_CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Release checklist

> **Note:** This project was generated by ChatGPT 5.6 Sol under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).
> **Note:** This project was generated using ChatGPT 5.6 Sol (ie. vibe-coded) under the direction of Adam Phillippy and Alex Sweeten. For analyses intended for publication, please use the official [ModDotPlot CLI](https://github.com/marbl/ModDotPlot) and cite the [ModDotPlot paper](https://doi.org/10.1093/bioinformatics/btae493).

This checklist applies to the v1.0.0 release. The browser remains intended for
This checklist applies to the v1.0.2 release. The browser remains intended for
exploratory use; analyses intended for publication should use the official ModDotPlot CLI.

## Source and identity
Expand Down Expand Up @@ -66,8 +66,10 @@ npm --prefix web run verify
- [x] Confirm no monotonic live-cache growth during a fixed pan/zoom trace.
- [x] Clearly retain the 1 Gb input value as an upper bound rather than a laptop
performance guarantee until sharding/spill validation is complete.
- [x] Run the generated million-record annotation parser/publication gate and enforce
explicit per-file byte and matching-record admission limits.
- [x] Run the generated million-feature annotation parser/publication gate and enforce
explicit per-file byte and retained-feature admission limits.
- [x] Import the official CHM13 v2.0 RefSeq Liftoff v5.3 GFF across all 24 chromosomes
without treating collapsed exon, CDS, and UTR rows as separately retained features.

## Reproducibility and distribution gate

Expand Down Expand Up @@ -103,4 +105,4 @@ npm --prefix web run verify
- [ ] Create and verify an annotated tag from a clean tree as the final source action.
- [ ] Produce source/binary archives, checksums, provenance, release notes, and known
limitations under the local ignored `release-artifacts/` directory.
- [ ] Push the verified v1.0.0 release commit to the `main` branch.
- [ ] Push the verified v1.0.2 release commit to the `main` branch.
Loading
Loading