A Web Component which uses Nightingale components to display protein sequence information.
Check out our 3-Year Roadmap & Sustainability Plan (DRAFT) to see our upcoming improvements, including moving towards a configuration-driven architecture, and how you can get involved!
Have questions about using or contributing to ProtVista?
We host regular virtual office hours to help with setup, integration, and contributions. Everyone is welcome — no registration required.
See dates and joining details here: Office Hours
We welcome contributions!
- Please see CONTRIBUTING.md for development setup, pull request guidelines, and office hours.
- Community standards: Code of Conduct
- Security issues: please report privately via SECURITY.md
- protvista-uniprot v3 is compatible with nightingale v5
- protvista-uniprot v2 is compatible with nightingale v3
This component requires a modern browser with support for ES2021 and Web Components (Custom Elements v1).
| Browser | Minimum version |
|---|---|
| Chrome | 92+ |
| Edge | 92+ |
| Firefox | 90+ |
| Safari | 15+ |
Older browsers are not supported.
Create an ES module import within a static HTML file:
<script type="module" src="./protvista-uniprot.mjs"></script>Then display the component:
<protvista-uniprot accession="P05067"></protvista-uniprot>import ProtvistaUniprot from 'protvista-uniprot';
window.customElements.define('protvista-uniprot', ProtvistaUniprot);You can then use it like this:
<protvista-uniprot accession="P05067"></protvista-uniprot>accession:stringconfig?:Array(see Configuration)nostructure?:boolean(default:false)
Run:
yarn install
yarn startto install dependencies and start the local development server.
Tests run under Vitest with a jsdom DOM environment. All APIs (describe, it, expect, vi, …) must be imported explicitly from 'vitest' — globals is off.
# Run the full pipeline (lint + types + unit)
yarn test
# Unit tests only (CI-friendly, non-zero exit on failure)
yarn test:unit
# Watch mode
yarn test:watch
# Coverage (writes text + html + lcov to ./coverage/)
yarn test:coverageCoverage output is for local use only and is not committed. Open coverage/index.html after yarn test:coverage to inspect.
Every push and pull request runs the same three steps as yarn test via .github/workflows/test-and-deploy.yml: yarn test:lint, yarn test:types, and yarn test:unit, under Node 24 on ubuntu-latest. A separate build job runs yarn build (and, on main, yarn build:demo) and deploys the demo to GitHub Pages. Coverage is not collected in CI today — run yarn test:coverage locally when you need a coverage signal.
Captured 2026-04-20 via yarn test:coverage (v8 instrumentation, 29 tests across 3 spec files):
| Metric | Coverage |
|---|---|
| Statements | 10.33% |
| Branches | 5.99% |
| Functions | 13.19% |
| Lines | 9.66% |
You can pass your own configuration to the component using the config attribute/property.
{
"categories": [
{
"name": "string",
"label": "string",
"trackType": "nightingale-track-canvas|nightingale-linegraph-track|nightingale-variation",
"adapter": "feature-adapter|structure-adapter|proteomics-adapter|variation-adapter",
"url": "string",
"tracks": [
{
"name": "string",
"label": "string",
"filter": "string",
"trackType": "nightingale-track-canvas|nightingale-linegraph-track|nightingale-variation",
"tooltip": "string"
}
]
}
]
}A custom protvista-event is emitted:
- When at least one of the tracks returns data
Example event detail:
detail: {
hasData: true;
}npm login
rm -rf node_modules dist
yarn
yarn build
yarn publish
git pushProtVista source code is licensed under the MIT License (see LICENSE).
Documentation and other written materials in this repository are licensed
under the Creative Commons Attribution 4.0 International (CC BY 4.0),
unless otherwise stated (see LICENSE-docs).
This work was supported by the Research Software Maintenance Fund, managed by the Software Sustainability Institute and funded by UKRI grant reference AH/Z000114/1.
