Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
|
Hello! Here is the PR adding figwig integration to IGV. I asked Claude to write a summary of all of our timing experiments and that is attached here. It is quite verbose so I imagine you'll probaby just skim it to find numbers interesting to you. The numbers are better than the ones in the issue because we did a second round of improvements and changed the zoom/summary details a bit to improve performance on large reads. But also note that many comparisons involve a figwig with a single track vs a bigwig, and it's unclear to me if thats a setting where we'd expect figwigs to be much better. Let me know if there's anything else I can provide or any crucial issues I've overlooked, and thanks for your time. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request was written with Claude Code.
Following #1896, this adds figwig (
.fw) files to IGV desktop. A figwig file holds theper-base signal of many tracks over one genome in one file (an assay's experiments, both strands,
model predictions, one track per cell), with a JSON record of attributes per track. Format:
https://figwig.readthedocs.io/en/latest/format.html. The attached NOTES.md has the design, the checks
and every timing.
What it adds
org.igv.figwig, a new package with no new dependency: the reader (FigWigFile, withFigWigChunks,FigWigPoolandFigWigSummaryIndex), aDataSource, and a track chooser.fwformat inTrackLoader, the magicFIGWinFileFormatUtils,and
IGV.isRestoringSession().A
.fwloads as oneDataSourceTrackper figwig track, named by the track, with its attributes asIGV attributes. A file of more than 50 tracks opens the existing
TrackChooserfirst; sessions andbatch scripts load without asking. Zoomed out, tracks draw from the file's summaries and zoom levels
(mean; the window functions offered are mean and none). Local files, http(s), s3 and gs paths are
read with range requests through IGV's own streams.
Speed
IGV headless, every track of a view loaded on 5 threads, data caches cleared before each view, one
pinned 8-core CPU complex, all formats on this branch's build. ms per screen update:
round trip over HTTP.
and on slow links, because its finest summary is the 16 kb tile, so it decodes raw data there.
faster over HTTP.
Testing
cover every chunk kind and element type, the types' extreme values, both orders and codecs, files
where some groups keep no summary, and a regional summary index (current and stale).
AbstractDataSourcescore object for score objectunder every window function.
and corrupted files, which fail with an exception and never hang.
UCSCBackupHostTest.testFileNotFoundDoesNotSwitchHosts, connects to UCSC's server. It also failedin 1 of 2 full runs on main, and passed alone on both.
Outside the unit tests, IGV draws from figwig files the values it draws from the source bigWigs
wherever both read raw data. Remote reads equal local reads over HTTP and HTTPS, including a 2.3 GB
file.
🤖 Generated with Claude Code