What came out of the ProtVista hackathon
From 7 to 9 October 2026 we ran the ProtVista hackathon: three free days online, working with the developers to get people’s own data into ProtVista and to make the project easier to join. This post is our record of the event. It lists every contribution with a link, says what we learned, and says what happens next.
Daniel Rice and Swaathi Kandasaamy planned and led the hackathon, and Ajay Mishra coordinated it, all at EMBL-EBI. The hackathon is part of ProtVista’s Research Software Maintenance Fund (RSMF) grant from the Software Sustainability Institute (SSI).
Thank you to everyone who took part. The pull requests below were opened by Bibhuprasadbehera, Rajarshi0, Tanmaypatil-25, abhicodes-007, bryanswe01, knownshah, lamplinked-netizen and lokchinleung, and vikashini-coder co-wrote the EGFR view.
At a glance
Section titled “At a glance”| Dates | 7–9 October 2026 |
| Format | Online, free |
| Attendees | 14 on day 1, 6 on day 2, 7 on day 3 |
| Teams | 3 |
| Projects | 3: documentation fixes by first-time users (L5), isoform support (F8) and a community preset (L2) |
| Merged pull requests from contributors, 6–9 October | 24, from 8 GitHub accounts (20 by the end of the event, 4 more by 30 October) |
How each figure was counted is at the end of this post.
New features
Section titled “New features”Isoform rows (#337)
Section titled “Isoform rows (#337)”By Rajarshi0 and a teammate (project F8).
ProtVista draws a protein’s canonical sequence, but UniProt lists several isoforms for many proteins. This contribution is the first step towards #14, which asked to see a protein’s annotations on a chosen isoform.
- A new built-in adapter,
uniprot-isoforms-json, draws one row per isoform on the canonical sequence’s numbering, with a gap where an isoform lacks part of the sequence and a mark where it replaces residues. It is opt-in, and is documented under Built-in track kinds. - A mapper rebuilds each isoform from UniProt’s own data and maps residues between the canonical sequence and an isoform, with tests on saved UniProt data.
- A new community view, APP isoforms, in the playground.
- Prototype pages that show canonical tau annotations on the 441-residue isoform most papers use, so that the P301L mutation appears at 301 rather than at its canonical position.
EGFR drug contacts (#355)
Section titled “EGFR drug contacts (#355)”By Bibhuprasadbehera and vikashini-coder (project L2, community presets).
A community view of human EGFR (P00533) that shows which residues contact each
of seven approved kinase-inhibitor drugs and one ATP analogue in solved
co-crystal structures, from PDBe-KB, beside domains, PDB structure coverage and
AlphaFold confidence. A script rebuilds the data from its sources and checks it
has not drifted. Open it in the playground as
EGFR drug contacts;
the team’s
first-milestone demo
is linked from the pull request.
Safer handling of unusual group ids (#356)
Section titled “Safer handling of unusual group ids (#356)”By knownshah.
A config group with the id __proto__ lost its data when the viewer loaded it.
The loader now keeps every group’s data, with tests, and the project’s security
note records the fix
(#325).
Documentation
Section titled “Documentation”During the event, seventeen pull requests improved the documentation. All of them came from the three people on project L5, documentation fixes by first-time users.
| Pull request | By | What changed |
|---|---|---|
| #334 | lokchinleung | Tutorial: says the HTML snippet goes in your page’s <body>, not in the playground’s config editor. |
| #336 | bryanswe01 | Configuration vs data: a clearer explanation of how data and kind connect a config to its data. |
| #338 | lokchinleung | Troubleshoot errors: start with the messages on screen before opening the browser console. |
| #339 | lamplinked-netizen | Overview: a short list of key terms, such as adapter, payload and schema. |
| #340 | lokchinleung | Load your own data: a new section, “Ask an AI to write your config”, including how to check what it writes. |
| #352 | lamplinked-netizen | The documentation index for AI assistants (llms.txt): plain-language explanations of each term and page. |
| #342, #343, #344, #345, #346, #347, #348, #349, #350, #351, #353 | bryanswe01 | A one-line summary for 11 pages, which search engines and link previews show: Rich tooltips in React, Configuration vs data, Author tooltips, Embed the viewer, Author a config, Escape hatches, Proteins outside UniProt, Theme the viewer, Built-in track kinds, Troubleshoot errors and Load your own data. |
In the run-up
Section titled “In the run-up”Four pull requests were opened on 6 October, the day before the event started:
- #326 by Tanmaypatil-25: tests for every branch of the variant colour rules (#314).
- #327 by knownshah: the structure panel’s colour-scale buttons stay in step with the colour scale, and two panels on one page no longer interfere (#310).
- #331 by abhicodes-007: Copy link and Download config buttons in the playground (#321).
- #332 by abhicodes-007: a new Events reference page (#322).
What came out of it
Section titled “What came out of it”- Isoforms in their own numbering (#393): the next step after #337, which moves the tau prototype into ProtVista itself, so a config can show a protein’s annotations on the isoform you care about.
- Structure legend (#390): a follow-up to #327. The legend under the structure did not follow the colour scale when a page set it. It is now fixed (#401).
- Follow-up work by the team to bring contributions up to release standard: #402 for the EGFR view, and further tests and wording for the playground buttons and the Events page (8d5c37a).
Feedback
Section titled “Feedback”We asked for anonymous feedback at the end of each day (#229) and got 6 responses on day 1, 6 on day 2 and 5 on day 3.
- Most people were new to ProtVista. On day 1, five of the six had never used it, and all six said they would use it in their future work.
- Ratings were high. Day 1: two Excellent, one Very good, two Good and one Satisfactory. Day 2: one Excellent, two Very good and three Good. Day 3: two Excellent and three Very good.
- The pace was about right. All six on day 1 found the amount of content about right. On day 2, four found the project work about right and two found it very hard; by day 3 all five found it about right.
- Most reached their goal. On day 3, three of the five said they had reached their project goal, one was about three quarters of the way and one about half. Hands-on work was the favourite part on day 2 (four of six), followed by project work.
- People want to stay involved. All five on day 3 said they would like to contribute or collaborate again.
What participants asked for:
- Downloading the viewer as a high-resolution image (PNG, JPG or similar).
- Viewing more than one protein at once.
- A clearer “start here” guide for beginners: where to paste the HTML and the YAML, how to load a sample file, and what a working result looks like.
- Advance notice of what to prepare, such as the coding basics needed to read the playground’s error messages.
- More on protein dynamics.
What we learned
Section titled “What we learned”What the pull requests show:
- Most contributions during the event were to the documentation. 17 of the 20 merged pull requests opened from 7 to 9 October changed only the docs. They show where the docs fell short for people outside the team: undefined terms, a tutorial step that did not say where a snippet goes, on-screen error messages that the troubleshooting page did not mention, and pages with no summary.
- Review went on well after the event. Every documentation pull request merged from the event was merged on 8 or 9 October. The four pull requests still open when it ended (#331, #332, #355, #356) were merged on 29–30 October, and three of them needed follow-up work from the team.
- Community views work without touching shared code. Both new community
views (APP isoforms and EGFR drug contacts) were added as a folder of
examples with a
preset.json, with no change to the playground’s code. That became possible on the evening of the first day (#378).
What the feedback shows:
- Beginners need a clearer first step. The survey asked for a “start here” guide, and the documentation fixes covered the same ground: where the HTML snippet goes, and what the on-screen errors mean.
- The project days are hard for newcomers without some preparation. Two people found day 2 very hard, and one asked to know beforehand what to prepare.
What changes
Section titled “What changes”Participants asked for two things that we will look at next:
- Better screenshots and image capture of the viewer.
- More than one protein at once in the viewer.
Get involved
Section titled “Get involved”You don’t need to have been at the hackathon. Nine of the good first issue
tasks filed for it are still
open,
and each says which files to look at. Start with
Contributing via a fork,
and come to
office hours
for help with setup or your own data.
How the figures were counted
Section titled “How the figures were counted”Attendance, teams and projects come from the organisers’ records, and the feedback from the daily surveys. The pull request figures were counted on 30 October 2026 from the repository on GitHub.
- Merged pull requests and accounts:
merged pull requests created 6–9 October 2026 by anyone but the maintainer;
no one else on the team opened one in those days. Add
merged:2026-10-06..2026-10-09for those merged by the end of the event, and usecreated:2026-10-07..2026-10-09for the event days alone. The maintainer’s own pull requests in those days (#328, #329, #330, #333) are not counted as contributions; #329, #330 and #333 were preparation for the event. - Open
good first issuetasks: the search linked under Get involved.
30 October 2026.
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.
Code is licensed under the MIT License; documentation and sample data are licensed under CC BY 4.0.
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.