Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
13d82a8
feat(score-sets): add lean whole-set variant view channel
bencap Jul 2, 2026
6789dc4
chore(build): declare multi-platform support and include cross-platfo…
davereinhart Jul 3, 2026
7bdb1be
refactor(score-set): fetch AlphaFold structure directly by UniProt ID
davereinhart Jul 3, 2026
3678012
refactor(score-set): drive visualizations from lean variant records
bencap Jul 6, 2026
f7447f5
feat(variant): detail panel and ClinVar-version display on the new API
bencap Jul 7, 2026
d1a6cd5
refactor(variant): rename supersededBy to supersededByScoreSet
bencap Jul 7, 2026
3258ded
fix (ScoreSetView): Only show protein structure button if scoreset va…
davereinhart Jul 8, 2026
49a42cd
feat(score-set): support large proteins in the protein structure viewer
davereinhart Jul 8, 2026
4545d14
Merge pull request #699 from VariantEffect/davereinhart/multi-platfor…
davereinhart Jul 8, 2026
8bfdb21
feat(calibrations): implement request deduplication for score calibra…
bencap Jul 9, 2026
d0cdac4
refactor(score-sets): add limit param to preview fetches, drop histog…
bencap Jul 9, 2026
081e836
feat(tooltips): add optional variant urn to variant details link
bencap Jul 9, 2026
eb62840
feat(assay-facts-card): add urn display and assay level row
bencap Jul 9, 2026
d39add0
perf(variant-preview): fetch only preview rows from the api
bencap Jul 9, 2026
7c93292
fix(variants): use mapped protein hgvs instead of removed field
bencap Jul 9, 2026
64b4c81
feat(measurement-types): add assay-level bucketing and rt labels
bencap Jul 9, 2026
e883e62
feat(api): add ttl-cached read wrapper for deduped gets
bencap Jul 9, 2026
5bd5e3b
fixup
bencap Jul 9, 2026
6baf829
refactor(api): wrap reads in ttl cache, retire clingen lookup endpoint
bencap Jul 9, 2026
d7f56f6
feat(protein-viewer): add PDB file download button
davereinhart Jul 9, 2026
b849101
feat(protein-viewer): add PML coloring-script download
davereinhart Jul 9, 2026
9c827c4
feat(protein-viewer): add ChimeraX coloring-script download
davereinhart Jul 10, 2026
cd8d8cf
feat(protein-viewer): add Mol* MolViewSpec (.mvsj) coloring download
davereinhart Jul 10, 2026
32998cd
fix(protein-viewer): Update download button labels with correct file …
davereinhart Jul 10, 2026
969daca
feat(allele-grouping): add projection-pair grouping for allele display
bencap Jul 10, 2026
3673a6f
chore(entity-cache): remove stray debug log
bencap Jul 10, 2026
94ea6b0
refactor(variant-lookup): rebuild on the measurements endpoint
bencap Jul 10, 2026
c9ac530
refactor(variant-coordinates): split dna level into cdna and genomic
bencap Jul 10, 2026
8906f9a
feat(measurement-aggregation): add per-study aggregation for rt evidence
bencap Jul 10, 2026
3b2acfa
feat(mavemd): add mergeAlleleSpellings, rebucket variants by relation…
bencap Jul 10, 2026
6f9547c
chore(schema): regenerate openapi types for measurements endpoint
bencap Jul 10, 2026
6b27019
feat(router): carry variant urn as ?variant= highlight param
bencap Jul 10, 2026
a5eee86
chore(schema): regenerate openapi types + tooling
bencap Jul 13, 2026
284da17
refactor(api): consolidate score-set fetchers on score-sets module
bencap Jul 13, 2026
a08092e
chore(ui): tokenize nav height and thin out gradient-bar accents
bencap Jul 13, 2026
c6c8c55
fix(measurement-cache): await reads before spreading into the cache
bencap Jul 13, 2026
9eb3384
refactor(coordinates): rename raw/mapped frames to submitted/reference
bencap Jul 13, 2026
da75505
refactor(measurements): consolidate level typing, rename study to sco…
bencap Jul 13, 2026
1c38f90
feat(clinvar-controls): add placement reducer, notables, and store
bencap Jul 13, 2026
1931d70
feat(key-drawer): add vocabulary Key drawer and v-key-term directive
bencap Jul 13, 2026
8b450be
feat(clinvar-controls): add unified variant deep link and significanc…
bencap Jul 14, 2026
0765269
fix(key-drawer): treat an empty v-key-term binding as a no-op
bencap Jul 14, 2026
b32de41
chore(ui): add vite-env.d.ts
bencap Jul 16, 2026
0713a5d
feat(formats): add formatConsequence and hgvsLabelRank
bencap Jul 16, 2026
615bbbc
refactor(calibrations): extract type aliases, add chooseDefaultCalibr…
bencap Jul 16, 2026
5e64525
refactor(measurements): split score loading and track in-flight state
bencap Jul 16, 2026
c3c4b0c
feat(clinvar-controls): grade discordance and resolve single series m…
bencap Jul 16, 2026
1b5676e
feat(score-set-histogram): bin clinical controls via resolveControlSe…
bencap Jul 16, 2026
c131d22
feat(gnomad): add frequency collection lib and variant surfaces
bencap Jul 16, 2026
46d657f
feat(variant): add ClinVar stat and summary components
bencap Jul 16, 2026
5ec170c
feat(allele-grouping): add confidence badge axis
bencap Jul 16, 2026
95af009
feat(variant): restructure variant page around related alleles and ev…
bencap Jul 16, 2026
7a8b4be
feat(score-set): add search-and-jump variant picker
bencap Jul 16, 2026
6cb56f3
refactor(measurement-types): unify assay-level vocabulary into one so…
bencap Jul 16, 2026
89af489
refactor(variant): collapse relationship vocabulary to one source
bencap Jul 16, 2026
ea02935
refactor(variant): collapse functional-classification vocabulary
bencap Jul 16, 2026
95dc00d
refactor(calibration): source functional range colors from vocab
bencap Jul 16, 2026
314809a
refactor(calibration): extract ACMG evidence vocabulary into acmg.ts
bencap Jul 16, 2026
95d1b26
refactor(calibration): keep container queries in calibrations.ts
bencap Jul 16, 2026
f69be88
refactor(variant): unify ACMG key section and split functional impact
bencap Jul 16, 2026
3360a90
refactor(variant): co-locate prose glossary sections with their owners
bencap Jul 16, 2026
42d7a4f
refactor(glossary): co-locate key sections with owning modules, go ap…
bencap Jul 17, 2026
3852556
feat(key-drawer): wire v-key-term deep links across more surfaces
bencap Jul 17, 2026
a66e07e
feat(allele-grouping): Add convergent allele group
bencap Jul 18, 2026
f3b9498
chore(open-api): regen open api spec
bencap Jul 18, 2026
0fe30f6
feat(alleles): consume isFocus and regenerate OpenAPI types
bencap Jul 18, 2026
7e0aa69
docs(mapping): add variant mapping & annotation section
bencap Jul 18, 2026
fc9dc20
refactor(score-set): extract shared model/scoreset overlap helper
davereinhart Jul 20, 2026
de4a30b
feat(protein-viewer): group download menu with headers and icons
davereinhart Jul 20, 2026
0ee8a63
Merge pull request #700 from VariantEffect/davereinhart/proteinstruct…
davereinhart Jul 20, 2026
6a93bd7
fix(allele): more gracefully handle lean CAID/PAID search results in …
bencap Jul 21, 2026
00f2228
feat(variant-detail): only display VEP version when a consequence exists
bencap Jul 21, 2026
6635547
feat(variant-detail-panel): principled empty state for annotation-les…
bencap Jul 21, 2026
c92eeec
fix(search-variants): warn on empty VRS digest lookup instead of 404
bencap Jul 21, 2026
0a41bbf
Merge origin/release-2026.2.5 into davereinhart/protein-viz-download-pdb
davereinhart Jul 20, 2026
b72e131
feat(protein-viewer): offer all available structure formats to download
davereinhart Jul 21, 2026
c03d667
fix(protein-viewer): build clean filenames for 3D-Beacons downloads
davereinhart Jul 21, 2026
bba0370
Merge pull request #701 from VariantEffect/davereinhart/protein-viz-d…
davereinhart Jul 21, 2026
9851cbf
chore(open-api): regen open api spec
bencap Jul 23, 2026
16c1d92
feat(variant): level-gate ClinVar/gnomAD placement by assay level
bencap Jul 23, 2026
1a2c709
feat(score-set-downloads): stream variant-details export, add annotat…
bencap Jul 23, 2026
fc493bd
feat(variant): rename "Your variant" to "This variant", rework confid…
bencap Jul 24, 2026
f32ef02
feat(variant): promote the redesigned detail page to production
bencap Jul 24, 2026
07cd85f
fix(key-drawer): scroll to active term when drawer is already open
bencap Jul 24, 2026
e4bb4ec
fix(SearchVariantsScreen): fix query parameter name from variantUrn t…
bencap Jul 24, 2026
1d4a3d5
refactor(glossary): tighten Key drawer definitions for clarity and pr…
bencap Jul 24, 2026
2c2c8b5
refactor(glossary): merge duplicate "this variant" concept, reorder d…
bencap Jul 24, 2026
7f9d7dc
feat(variant-detail): consolidate Superseded badge into the Key drawer
bencap Jul 24, 2026
1bc6f87
refactor(clinvar): standardize on "inferred" for sibling-derived calls
bencap Jul 24, 2026
5abe837
chore(variant): drop unused prop, clarify allele-ledger subtitle
bencap Jul 24, 2026
20ac9a0
refactor(ui): centralize functional-score display precision
bencap Jul 24, 2026
35cfa92
fix(score-set): find unscored variants, surface score in detail panel
bencap Jul 24, 2026
f3fa94f
refactor(search): drop the retired include_nucleotide_siblings flag
bencap Jul 24, 2026
d48da5e
fix(download-buttons): update download buttons image in docs
bencap Jul 24, 2026
490d9a1
fix(variant): show each allele's own gnomAD frequency in the ledger
bencap Jul 24, 2026
b6a1c4f
refactor(variant): rename allele projection terminology and relation …
bencap Aug 18, 2026
71c6da1
docs(variant): tighten and restructure ClinVar/gnomAD comments
bencap Aug 18, 2026
4323021
Merge branch 'release-2026.2.5' into release-2026.3.0
bencap Aug 18, 2026
8e80c89
Add required-field markers to form field components
davereinhart Aug 19, 2026
8778048
Mark required fields in experiment, score set, and target forms
davereinhart Aug 19, 2026
3614cfc
Explain the required-field marker on creator screens
davereinhart Aug 19, 2026
b056b05
Merge branch 'release-2026.3.0' into feature/bencap/api-redesign-for-…
bencap Aug 20, 2026
54d895c
Add required fields legend subtitle to ScoreSetEditor and ExperimentE…
davereinhart Aug 21, 2026
02b6e05
Use MvRequiredMarker on KeywordFields to indicate required text on "O…
davereinhart Aug 21, 2026
a2a1899
Pass required prop to FileUpload on MvUploadField component
davereinhart Aug 21, 2026
5834282
Mark the target label required and split target help text
davereinhart Aug 21, 2026
fb23fb0
Mark required fields in the calibration form
davereinhart Aug 21, 2026
f453f6b
Allow a calibration defined by only a title and make label required f…
davereinhart Aug 21, 2026
29b7291
Mark the class name required for functional classes
davereinhart Aug 21, 2026
cce36e5
Mark the classification and range bounds required
davereinhart Aug 21, 2026
f60292d
refactor(ui): extract getPublicationUrl into publication lib
bencap Aug 26, 2026
e6abfbd
feat(mavemd): redesign landing-page score set table
bencap Aug 26, 2026
b96daab
Standardize required fields legend elements, remove unnecessary padding
davereinhart Aug 31, 2026
659f6e7
Merge pull request #717 from VariantEffect/feature/davereinhart/606/f…
davereinhart Aug 31, 2026
5251ca2
Send retired tmp URNs to the canonical URN in the address bar
davereinhart Sep 2, 2026
9a1de24
Unit tests for the canonical URN redirect
davereinhart Sep 2, 2026
4220a39
Track the URN prop reactively in ScoreSetView
davereinhart Sep 8, 2026
42ed47a
feat(home): rework Explore/Contribute panels and refresh search docs
bencap Sep 15, 2026
b1e5c30
fix(variant): distinguish reverse-translation fan-out from an empty a…
bencap Sep 16, 2026
369b1fa
Merge pull request #720 from VariantEffect/feature/davereinhart/617/t…
davereinhart Sep 16, 2026
d3534fd
chore(schema): regenerate OpenAPI types
bencap Sep 18, 2026
451fe40
feat(calibration): add disease context and clinical controls
bencap Sep 18, 2026
5593cd7
feat(score-set): freeze scores after publish
bencap Sep 18, 2026
025cc26
fix(mavemd): distinguish loading from empty state in score sets table
bencap Sep 21, 2026
d5f61c1
docs(api-quickstart): document the API rate limit and 429 handling
bencap Sep 24, 2026
76192d2
Merge remote-tracking branch 'origin/main' into release-2026.3.0
bencap Sep 28, 2026
c896ec5
Merge pull request #725 from VariantEffect/docs/bencap/api-rate-limits
bencap Sep 29, 2026
d31c878
Merge pull request #719 from VariantEffect/feature/bencap/694/mavemd-…
bencap Sep 29, 2026
b7bc59d
Merge pull request #721 from VariantEffect/feature/bencap/665-explore…
bencap Sep 29, 2026
b4f48f0
perf(variant-preview): fetch only the preview rows
bencap Sep 29, 2026
2f0786c
docs(api-quickstart): document the CSV download limit and 503 retries
bencap Sep 29, 2026
e8c3c28
Merge pull request #730 from VariantEffect/docs/bencap/csv-rate-limit
bencap Sep 29, 2026
784e01f
test(variant-preview): assert unused HGVS columns are kept
bencap Sep 29, 2026
9f8fbc5
Merge pull request #729 from VariantEffect/chore/bencap/728/limit-var…
bencap Sep 29, 2026
fc7b43a
fix(downloads): send credentials with the NDJSON download streams
bencap Sep 30, 2026
5219cd0
Merge pull request #722 from VariantEffect/feature/bencap/754/calibra…
bencap Sep 30, 2026
f8b9093
feat(variant): name the page subject "Your variant" and merge the dow…
bencap Sep 30, 2026
b0ca98a
Merge release-2026.3.0 into feature/bencap/api-redesign-for-allele-da…
bencap Sep 30, 2026
bee68e6
feat(variant): simplify variant-page vocabulary and relationship display
bencap Sep 30, 2026
18a8700
Merge pull request #723 from VariantEffect/feature/bencap/api-redesig…
bencap Sep 30, 2026
d086f9d
chore: update dependencies and version in package.json
bencap Sep 30, 2026
6f696f5
fix(variant): omit the gnomAD dataset for an unrecognized release and…
bencap Oct 1, 2026
438a402
docs(data-standards): update VA-Spec examples for VA-Spec 1.1
bencap Oct 2, 2026
d0e0488
style(ui): adopt shared .mave-card, .mave-tag and .mave-label with WC…
bencap Oct 7, 2026
7f261f6
feat(calibration): tag primary and research-use-only calibrations ins…
bencap Oct 7, 2026
2090240
feat(score-set): consolidate score-set page panels and clarify the va…
bencap Oct 7, 2026
ce1f9d1
feat(variant): replace measurement cards with a grouped measurement t…
bencap Oct 7, 2026
9b32c9d
fix(search): keep a protein result's own genome-build HGVS when mergi…
bencap Oct 7, 2026
b046517
feat(search): group MaveMD search results by relationship, as on the …
bencap Oct 7, 2026
4a6bc9b
style(ui): load real Raleway weights, use lining figures, and fix bra…
bencap Oct 7, 2026
8e061fc
fix(forms): guard unsaved changes, make file upload keyboard-operable…
bencap Oct 7, 2026
64e1529
fix(search): stop history spam and mid-typing redirects, and show sea…
bencap Oct 7, 2026
b24ddc1
fix(score-set): distinguish not-found from failed loads and stop the …
bencap Oct 7, 2026
5c9df46
feat(calibration): keep controls only while the PHI affirmation is ch…
bencap Oct 7, 2026
aa11ec9
docs(schema): describe the allele detail route's permission rule
bencap Oct 7, 2026
b50681b
feat(calibration): share one calibration picker and label unclassifie…
bencap Oct 8, 2026
a3b137d
fix(tooling): load the Prettier config on Node 20
bencap Oct 8, 2026
7f0b377
feat(variant): show each measurement's score distribution and the cal…
bencap Oct 8, 2026
3dd1e01
chore(schema): regenerate API types from the release API
bencap Oct 8, 2026
87ea06b
feat(variant): show superseded score sets as a switch
bencap Oct 8, 2026
46985ef
fix(variant): show the clinically strongest gnomAD record, not the hi…
bencap Oct 9, 2026
8d4f05e
feat(variant): shorten the measurement rows' RUO tag to "RUO"
bencap Oct 9, 2026
cf4f0f2
feat(search): show a score strip on MaveMD search results
bencap Oct 9, 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
2 changes: 1 addition & 1 deletion .github/instructions/code-style.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Formatting (Prettier)

The project uses Prettier for code formatting, configured in `.prettierrc.ts`:
The project uses Prettier for code formatting, configured in `.prettierrc.json`:

| Setting | Value |
| ----------------------- | -------- |
Expand Down
2 changes: 1 addition & 1 deletion .github/instructions/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ MaveDB UI is the frontend for [MaveDB](https://mavedb.org), a database for Multi
| ------------------ | ------------------------------------------------------- |
| Framework | Vue 3 (Composition API via `defineComponent` + `setup`) |
| Language | TypeScript (strict mode) with some legacy `.js` files |
| Build tool | Vite 5 |
| Build tool | Vite 7 |
| Package manager | npm |
| Component library | PrimeVue 4 (Aura theme) |
| CSS | Tailwind CSS 4 |
Expand Down
15 changes: 11 additions & 4 deletions .github/instructions/state-management.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,19 @@ const {downloadFile, downloadMultipleData, customDialogVisible, dataTypeOptions}

## Variant Coordinates (`src/composables/use-variant-coordinates.ts`)

Stateless utilities for resolving variant HGVS coordinates based on display mode (raw vs mapped). Shared between ScoreSetView (variant search, labels, sequence type detection) and ScoreSetHeatmap.
Stateless resolution of a lean variant's HGVS coordinate across two orthogonal axes: sequence
**level** (`dna` ↔ `protein`) and **frame** (`raw` = submitted/target numbering ↔ `mapped` =
reference numbering). `coordinateFor` is the single source of truth — every derivation (heatmap
x/y, axis availability, labels, tooltips) resolves through it, so the (level, frame) → coordinate
mapping lives in one place. The frame axis is load-bearing: `raw` and `mapped` are genuinely
different coordinate systems, so flipping frame reprojects the grid, it does not merely relabel it.
Shared between ScoreSetView (search, labels, level options) and ScoreSetHeatmap (plotting).

```ts
const {getHgvsNt, getHgvsPro, labelForVariant, sequenceTypeOptions} = useVariantCoordinates()
const nt = getHgvsNt(variant, useMapped) // resolved NT coordinate
const options = sequenceTypeOptions(variants, useMapped) // [{title: 'DNA', value: 'dna'}, ...]
const {coordinateFor, sequenceTypeOptions, resolveLevel, labelForVariant} = useVariantCoordinates()
coordinateFor(variant, 'dna', 'mapped') // → HgvsField | null (null for protein assays — no mapped coding, mavedb-api#784)
sequenceTypeOptions(variants, 'mapped') // → [{title: 'DNA', value: 'dna'}, ...] available for that frame
resolveLevel(variants, 'protein', 'mapped') // → the level to display, falling back when the desired one is stranded
```

## Entity Cache (`src/composables/entity-cache.ts`)
Expand Down
7 changes: 4 additions & 3 deletions .github/instructions/styling.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ Key tokens:

| Token | Value | Usage |
|-------|-------|-------|
| `--color-sage` | `#78b793` | Primary brand color (PrimeVue: `sagePalette`) |
| `--color-sage-dark` | `#5a9375` | Hover state for sage |
| `--color-sage` | `#78b793` | Primary brand color for fills, borders and icons; fails WCAG AA as text (PrimeVue: `sagePalette`) |
| `--color-sage-dark` | `#5a9375` | Hover fills; as text only at 20px bold or larger |
| `--color-sage-strong` | `#3a654e` | Sage-colored text and links (passes AA on white and sage tints) |
| `--color-mint` | `#a1d8c8` | Accent backgrounds |
| `--color-orange-cta` | `#f8971d` | Warn/CTA actions (PrimeVue: `orangePalette`) |
| `--color-danger` | `#D05353` | Destructive actions (PrimeVue: `dangerPalette`) |
Expand Down Expand Up @@ -56,7 +57,7 @@ Located in `src/assets/`:

## Fonts

- **Body**: Raleway (`@fontsource/raleway`)
- **Body**: Raleway (`@fontsource/raleway`, weights 400/500/600/700 and 400 italic). Import each weight file explicitly in `MvLayout.vue`: the package index ships only 400, and any missing weight is browser-synthesized. Body text sets `font-feature-settings: 'lnum'` because Raleway defaults to old-style figures; use `tabular-nums` where digits align in columns.
- **Display/Headings**: Exo 2 (`@fontsource/exo-2`, weights 700/800/900)

## Layout Patterns
Expand Down
1 change: 1 addition & 0 deletions .github/instructions/vue-components.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ Key composables:
- `use-calibration-editor.ts` — draft calibration state, dirty tracking, validation, and save logic
- `use-calibration-dialog.ts` — calibration editor dialog open/close state
- `use-json-file-field.ts` — JSON file upload field with parsing and validation
- `use-unsaved-changes-guard.ts` — confirms before a route change, reload or reset discards form input (creators and editors). An exception to the no-lifecycle-coupling rule: it registers a route-leave guard and a `beforeunload` listener
- `entity-cache.ts` — shared reactive cache for entity lookups (score sets, experiments) with TTL and deduplication
- `scoped-id.ts` — generates unique IDs for form accessibility

Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Derived files
/dist/
/src/schema/openapi.d.ts

# MkDocs documentation (Prettier breaks admonitions and collapsible syntax)
/docs/
13 changes: 13 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"arrowParens": "always",
"bracketSpacing": false,
"endOfLine": "lf",
"printWidth": 120,
"quoteProps": "as-needed",
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "none",
"useTabs": false,
"vueIndentScriptAndStyle": false
}
14 changes: 0 additions & 14 deletions .prettierrc.ts

This file was deleted.

8 changes: 4 additions & 4 deletions docs/content/finding-data/downloading.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@ Each [score set](../getting-started/key-concepts.md#score-sets) page in MaveDB i

<figure markdown="span">
![Download buttons on a MaveDB score set page](../images/download_buttons.png)
<figcaption>Download options available on a score set page, including score/count CSV, mapped variants JSON, and annotated variant exports.</figcaption>
<figcaption>Download options available on a score set page, including score/count CSV, variant details, and annotated variant exports.</figcaption>
</figure>

### Score and count data

MaveDB allows users to download variant effect score data along with associated count data in **CSV** (Comma-Separated Values) format.

The downloaded file contains the same data that was uploaded by the submitter, with an additional column for variant [URNs](../reference/accession-numbers.md) that uniquely identify each variant in MaveDB. Users may also choose to include other MaveDB-generated columns in this output, such as mapped variant HGVS strings and VRS identifiers, if available.
The downloaded file contains the same data that was uploaded by the submitter, with an additional column for variant [URNs](../reference/accession-numbers.md) that uniquely identify each variant in MaveDB. Using the **Custom Data** option, users may also choose to include other MaveDB-generated columns in this output, such as mapped variant HGVS strings and VRS identifiers, and — where available — annotation columns for gnomAD allele frequency, Ensembl VEP consequence, ClinGen allele IDs, and ClinVar clinical significance.

!!! warning
Score and count columns are non-prescriptive and may vary between datasets. Columns may mean different things between datasets, so users should refer to the dataset methods section for details on the specific columns included in each download.

### Mapped variants (VRS JSON)
### Variant details (VRS JSON)

MaveDB stores [mapped variants](../reference/variant-mapping.md) using the [GA4GH VRS](https://vrs.ga4gh.org/) standard for representing genetic variants. For datasets that have been mapped, users may download a JSON file containing all mapped variants associated with the score set. This provides a structured representation of each variant including genomic coordinates, alleles, and reference sequences.
MaveDB represents [mapped variants](../reference/variant-mapping.md) using the [GA4GH VRS](https://vrs.ga4gh.org/) standard. For datasets that have been mapped, the **Variant Details** button downloads a [newline-delimited JSON](https://jsonlines.org/) (NDJSON) file — one record per mapped variant, the bulk counterpart of a single variant's detail page. Each record carries the assayed-level (pre-mapped) and measured (post-mapped) VRS objects, the full [GA4GH Cat-VRS](https://vrs.ga4gh.org/) categorical variant (the variant's equivalence class of related alleles), and its gnomAD, Ensembl VEP, and ClinVar annotations.

### Annotated variants (VA-Spec)

Expand Down
2 changes: 2 additions & 0 deletions docs/content/finding-data/external-integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ Mapped variants in MaveDB are cross-referenced with the [gnomAD database](https:

A variant's frequency is displayed on its [variant page](../mavemd/variant-page.md), and is available in bulk through the `gnomad` namespace of the variant data download. Each frequency is matched by ClinGen allele ID, so it is a direct assertion about that variant rather than an aggregate over related variants. Variants absent from gnomAD show no frequency.

A protein change has no gnomAD record of its own. For a protein-level measurement, the score set's variant panel shows the record of the nucleotide variant encoding that change with the highest FAF95, the frequency ACMG BA1/BS1 thresholds apply to. The record is labelled with that variant, and every encoding variant's record is listed alongside it. Frequencies are shown exactly as gnomAD records them and are never summed.

## Ensembl VEP

MaveDB uses the [Ensembl Variant Effect Predictor (VEP)](https://www.ensembl.org/info/docs/tools/vep/index.html) to annotate mapped variants with predicted functional consequences, including effects on protein coding sequences, splicing, and regulatory regions. These VEP annotations are displayed alongside variant effect scores on score set pages, providing additional context for interpreting the functional impact of each variant.
Expand Down
2 changes: 1 addition & 1 deletion docs/content/finding-data/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MaveDB provides several ways to discover, explore, and download MAVE datasets. W

- **[Searching Datasets](searching.md)** -- Find MAVE datasets by gene name, target organism, publication, or keywords using the MaveDB search interface.
- **[Visualizations](visualizations.md)** -- Explore variant effect data through interactive histograms, heatmaps, and 3D protein structure views on score set pages.
- **[Downloading Data](downloading.md)** -- Download variant scores, counts, mapped variants, and annotated data in CSV, VRS JSON, and VA-Spec formats, or access a bulk archive via Zenodo.
- **[Downloading Data](downloading.md)** -- Download variant scores, counts, variant details, and annotated data in CSV, VRS JSON, and VA-Spec formats, or access a bulk archive via Zenodo.
- **[External Integrations](external-integrations.md)** -- Learn how MaveDB connects with ClinGen, ClinVar, gnomAD, Ensembl VEP, DECIPHER, and other resources.

Looking for a specific variant? Use the [MaveMD variant search](../mavemd/variant-search.md) to look up individual variants by HGVS, ClinVar ID, dbSNP RSID, or ClinGen Allele ID.
22 changes: 12 additions & 10 deletions docs/content/finding-data/searching.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,30 @@ MaveDB provides a search interface to help users find relevant datasets. You can
## Search interface

<figure markdown="span">
![MaveDB search interface showing target filters and keyword search](../images/search_interface.png)
<figcaption>The MaveDB search interface with target filters and keyword search. Results are grouped by experiment, with matching score sets listed underneath.</figcaption>
![MaveDB search interface showing the filter sidebar and keyword search](../images/search_interface.png)
<figcaption>The MaveDB search interface with target, publication, and keyword filters. Results are grouped by experiment, with matching score sets listed underneath.</figcaption>
</figure>

The search interface allows users to filter datasets based on various criteria.
The search interface presents a filter sidebar on the left (a slide-out drawer on smaller screens) alongside the results. Each filter is a collapsible section; the **Gene** and **Organism** sections are expanded by default, and the rest can be opened as needed.

In the **Target** tab, users can filter datasets by the following fields drawn from user-submitted [target](../submitting-data/targets.md) metadata:
The following sections filter datasets by user-submitted [target](../submitting-data/targets.md) metadata:

- **Target name** -- The name of the target associated with the dataset (usually a gene or protein).
- **Target type** -- The type of target (e.g., protein-coding gene, non-coding RNA, regulatory element).
- **Gene** -- The name of the target associated with the dataset (usually a gene or protein).
- **Organism** -- The organism from which the target is derived.
- **Target type** -- The type of target (e.g., protein-coding gene, non-coding RNA, regulatory element).
- **Target accession** -- The accession number or identifier for the target (e.g., Ensembl ID, RefSeq ID).

In the **Publication** tab, users can filter datasets by the following publication-related fields:
These sections filter by publication metadata:

- **Author** -- The author of any publication associated with a dataset.
- **Database** -- The database of any publication associated with a dataset (e.g., PubMed, CrossRef).
- **Journal** -- The journal in which any publication associated with a dataset was published.
- **Publication database** -- The database that indexes an associated publication (e.g., PubMed, CrossRef).

The **Keywords** section filters by [controlled-vocabulary keywords](../reference/controlled-vocabulary.md), grouped by category, that describe how an assay was performed.

Users may also enter keywords into the search bar to perform a full-text search across all dataset metadata fields, including target metadata, publication metadata, [assay facts](../reference/assay-facts.md), and score set metadata. Note that search filters are additive: datasets must meet **all** specified criteria to appear in the results.
Separately, the **search bar** at the top of the page runs a full-text search across all dataset metadata fields, including target metadata, publication metadata, [assay facts](../reference/assay-facts.md), and score set metadata. Filters and the search term are additive: datasets must meet **all** specified criteria to appear in the results, and any filters you have applied appear as removable chips beneath the search bar.

Results are grouped by [experiment](../getting-started/key-concepts.md#experiments), with all matching [score sets](../getting-started/key-concepts.md#score-sets) listed under each experiment.
Results are grouped by [experiment](../getting-started/key-concepts.md#experiments), with all matching [score sets](../getting-started/key-concepts.md#score-sets) listed under each experiment. Use the **Sort by** control above the results to order them by most recent, most variants, or title (A--Z).

!!! note
Search results update in real time as you modify your criteria, but they are limited to the first 100 results for performance reasons. If your search returns more than 100 results, try refining your criteria further.
Expand Down
4 changes: 2 additions & 2 deletions docs/content/finding-data/visualizations.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ The custom view gives users full control over the histogram. Available options i

The heatmap provides a two-dimensional view of variant effect scores across the target sequence, with positions along the horizontal axis and substitutions along the vertical axis. This visualization is particularly useful for identifying positional patterns in variant effects.

When variants are provided at the nucleotide level, users can toggle between nucleotide and amino acid views using the controls below the heatmap. In amino acid view, residues are ordered by hydrophobicity using the [Kyte-Doolittle scale](http://www.sciencedirect.com/science/article/pii/0022283682905150) and grouped by chemical class based on values from [Enrich2](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1272-5/figures/1).
The **Coordinate system** control in the heatmap's header switches between nucleotide and amino acid positions. The **Submitted variants / Reference variants** toggle at the top of the page chooses between the coordinates the researchers submitted, numbered against the assay's own target sequence, and the same variants mapped onto standard reference sequences; with reference variants shown, the heatmap can be drawn in cDNA, genomic, or amino acid coordinates. In amino acid view, residues are ordered by hydrophobicity using the [Kyte-Doolittle scale](http://www.sciencedirect.com/science/article/pii/0022283682905150) and grouped by chemical class based on values from [Enrich2](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1272-5/figures/1).

Each cell represents a specific variant at a given position. Color intensity indicates the variant effect score, and wild-type variants are shown in yellow. Hovering over a cell reveals the variant's score, classification (if applicable), and [HGVS](../submitting-data/data-formats.md) notation. For long target sequences, you can scroll horizontally to explore the full heatmap.

Expand All @@ -75,7 +75,7 @@ When a baseline score is available from a [score calibration](../reference/score

## Protein structure viewer

The protein structure viewer provides an interactive 3D view of variant effect scores mapped onto a protein structure using [Mol\*](https://molstar.org/). This visualization is available when the score set's target can be linked to a UniProt accession — either because the target was defined with a UniProt identifier, or because MaveDB was able to match the target sequence to a UniProt entry during [variant mapping](../reference/variant-mapping.md). If you don't see the structure viewer for your score set, the target may not have a matching UniProt record.
The protein structure viewer provides an interactive 3D view of variant effect scores mapped onto a protein structure using [Mol\*](https://molstar.org/). This visualization is available when the score set's target can be linked to a UniProt accession — either because the target was defined with a UniProt identifier, or because MaveDB was able to match the target sequence to a UniProt entry during [variant mapping](../reference/variant-mapping.md). Open it with **View on protein structure** below the heatmap. If you don't see that link for your score set, the target may not have a matching UniProt record.

The viewer displays a side-by-side heatmap and 3D structure sourced from the [AlphaFold Protein Structure Database](https://alphafold.ebi.ac.uk/), with a color gradient applied based on the mean variant effect score at each position. Users can:

Expand Down
Binary file modified docs/content/images/download_buttons.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/content/images/search_interface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading