Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
9968576
Make the DNASeq injector dormant while dnaseq processing is redone
jbrestel Jul 30, 2026
60a3e36
Stop consuming communitycount, which this branch stopped producing
jbrestel Jul 30, 2026
28b06e4
Inject the DeRisi time series questions instead of hardcoding them
jbrestel Jul 30, 2026
e785390
Drop a dataset-specific attribute from a generic compound search
jbrestel Jul 30, 2026
9ff6094
Add VariationAttributes tuning table
jbrestel Jul 30, 2026
9bcf147
Add a minimal buildable variation record
jbrestel Jul 30, 2026
48f13bc
Add variation classification attributes from VariationFeature
jbrestel Jul 30, 2026
d35e557
Add SNP and Indel allele attributes as separate sections
jbrestel Jul 30, 2026
af9b2aa
Add variation strain and call statistic attributes
jbrestel Jul 30, 2026
d8ccd76
Add variation gene aggregate, per-caller effect rollups, collapsed co…
jbrestel Jul 30, 2026
e3571e2
Fix variation impact sorting and the collapsed-MAF help text
jbrestel Jul 30, 2026
f9264c0
Add variation record overview and default summary columns
jbrestel Jul 30, 2026
dd4efa6
Add variation TranscriptProducts record table
jbrestel Jul 30, 2026
9cc505b
Correct the TranscriptProducts strain_count help text
jbrestel Jul 30, 2026
b19c82d
Add variation PredictedEffects record table
jbrestel Jul 30, 2026
cf0dd13
Categorize variation record attributes and tables
jbrestel Jul 30, 2026
d636b44
Label the overview allele rows by class instead of header rows
jbrestel Jul 30, 2026
51cb41b
Assemble the "allele (frequency)" strings in SQL, not as textAttributes
jbrestel Jul 30, 2026
19b6527
Fix ontology parenting and four review findings
jbrestel Jul 30, 2026
e0bb106
Rename distinct_strain_count to "Called Strain Count (including refer…
jbrestel Jul 30, 2026
2723cda
Point the variation record at the real tuning table
jbrestel Jul 30, 2026
d3616c6
Add the variation record design spec and implementation plan
jbrestel Aug 5, 2026
6be5539
Reconcile the variation plan's progress with what actually shipped
jbrestel Aug 5, 2026
5fd66ca
Add the variation searches design spec (scaffolding + ID search)
jbrestel Aug 5, 2026
f77d97a
Add the variation searches implementation plan
jbrestel Aug 5, 2026
6130ef9
Add variation search scaffolding and the VariationBySourceId search
jbrestel Aug 5, 2026
ff563a5
Disambiguate the spec reference in variationParams.xml
jbrestel Aug 5, 2026
cf87f9d
Import the variation question, query, and param files
jbrestel Aug 5, 2026
eaa4757
Categorize the VariationBySourceId search under Genetic Variation
jbrestel Aug 5, 2026
6961842
Mark the variation searches spec implemented
jbrestel Aug 5, 2026
3dc299a
Add the VariationsByIsolateGroup design spec
jbrestel Aug 5, 2026
c1829d6
Add VariationsByIsolateGroup implementation plan
jbrestel Aug 5, 2026
46e06f4
Point buildNumber at build-71 webservices files
jbrestel Aug 5, 2026
a7a54fa
Add organismVQ.withVariationsTree for the variation searches
jbrestel Aug 5, 2026
1487112
Add hidden eda_sample_table_suffix param and VariationVQ querySet
jbrestel Aug 5, 2026
71bfa81
Add EDA-driven variation_sample_meta filterParam and its two queries
jbrestel Aug 5, 2026
e5946d4
Fix illegal -- inside XML comments in the plan's code blocks
jbrestel Aug 5, 2026
dee13ba
Copy the four HSSS path and threshold params into variationParams
jbrestel Aug 5, 2026
594c502
Fix wdkXml grep patterns in the plan: single quotes, not double
jbrestel Aug 5, 2026
d870ea6
Add VariationsByIsolateGroup process query
jbrestel Aug 5, 2026
13c85bf
Fix the plugin source path in the plan (src/main/java, not lib/java)
jbrestel Aug 5, 2026
7ac703c
Add the VariationsByIsolateGroup question
jbrestel Aug 5, 2026
06cf403
Add the required dynamicAttributes block to the plan's Task 7
jbrestel Aug 5, 2026
cdd33e3
Categorize VariationsByIsolateGroup under Genetic Variation
jbrestel Aug 5, 2026
f5345b4
Design VariationsByLocation and VariationsByGeneIds
jbrestel Aug 5, 2026
7b8501d
Add implementation plan for VariationsByLocation and VariationsByGeneIds
jbrestel Aug 5, 2026
87b5db5
Fix the plan's installed-jar check: read the class, do not grep the l…
jbrestel Aug 5, 2026
6b38902
Add chromosomeOptionalForVariations param and its vocabulary
jbrestel Aug 5, 2026
ef12c77
Add the VariationsByLocation search
jbrestel Aug 5, 2026
45a2e2a
Add the VariationsByGeneIds search
jbrestel Aug 5, 2026
fb976c0
Categorize VariationsByLocation and VariationsByGeneIds
jbrestel Aug 5, 2026
a74be0f
Design VariationsByTwoIsolateGroups, the last of the five snp ports
jbrestel Aug 5, 2026
4656225
Add implementation plan for VariationsByTwoIsolateGroups
jbrestel Aug 5, 2026
9f6aae1
Add the two-group sample filters and four thresholds
jbrestel Aug 5, 2026
f087d78
Fix the plan's expected param count: fourteen, not thirteen
jbrestel Aug 5, 2026
27ba528
Add the VariationsByTwoIsolateGroups search
jbrestel Aug 5, 2026
e131375
Categorize VariationsByTwoIsolateGroups
jbrestel Aug 5, 2026
f41a71b
Design the port of the four remaining Genetic Variation searches
jbrestel Aug 6, 2026
9a31137
Add implementation plan for the Genetic Variation searches port
jbrestel Aug 6, 2026
adb9ebe
Restore the GenesByNgsSnps process query on variationParams
jbrestel Aug 6, 2026
80189c9
Switch the plan's query verification to -showParams
jbrestel Aug 6, 2026
ebfb517
Restore the GenesByNgsSnps question
jbrestel Aug 6, 2026
382386a
Fix the plan's service checks for the webapp context path
jbrestel Aug 6, 2026
0745c44
Use -- not ## for SQL comments in GenesByNgsSnps postCacheUpdateSql
jbrestel Aug 6, 2026
ea74772
Add transitional apidbtuning CNV tables
jbrestel Aug 6, 2026
8aa395e
Correct the webready CNV tables for the next workflow run
jbrestel Aug 6, 2026
2ae20ca
Merge master into dnaseq-merge-experiments
jbrestel Aug 6, 2026
7473351
Order needsUpdateProgram before program in the Pubmed tuning table
jbrestel Aug 6, 2026
2d0a87b
Add CNV organism vocabularies and the cnv_sample_meta filter
jbrestel Aug 6, 2026
8eca4e9
Port GenesByCopyNumber onto the corrected CNV tables
jbrestel Aug 6, 2026
9123b6a
Use percentile_cont, not Oracle median(), in the CNV medians CTEs
jbrestel Aug 6, 2026
6d32f8c
Port GenesByCopyNumberComparison onto the corrected CNV tables
jbrestel Aug 6, 2026
f95b152
Restore the CNV summary columns on both gene CNV searches
jbrestel Aug 6, 2026
340d236
Port SequencesByPloidy onto the corrected chromosome CNV table
jbrestel Aug 6, 2026
afc84f3
Categorize the three CNV searches under Genetic Variation
jbrestel Aug 6, 2026
52a1b82
Fix Task 14's unpassable gate in the port plan
jbrestel Aug 6, 2026
e0bbc54
Retire the dead CNV organism and strain params
jbrestel Aug 6, 2026
63d6e80
Compute ref_cn from the annotation, per chromosome
jbrestel Aug 6, 2026
b13b371
Apply final code review findings
jbrestel Aug 6, 2026
d48ac7d
Add GeneVariationSummary tuning + webready tables
jbrestel Aug 7, 2026
9a38645
Add ungated piN/piS columns for display alongside their denominator
jbrestel Aug 7, 2026
61e49a3
Fix: reference TranscriptAttributes unversioned, not with &1
jbrestel Aug 7, 2026
ed68d81
Wire the gene-record Genetic Variation attributes
jbrestel Aug 7, 2026
c6eddbb
Group the gene variation attributes into six record subsections
jbrestel Aug 7, 2026
1c3bd3b
Rename the genotype-ploidy attribute so it cannot be read as copy number
jbrestel Aug 7, 2026
f3f46c6
Offer the reference strain in the HSSS sample filters
jbrestel Aug 7, 2026
4266421
Show dataset display names in the sample filters, not DS_ IDs
jbrestel Aug 7, 2026
c8a99bd
Rename the Variation record to Variant; display as "Short Variant"
jbrestel Aug 8, 2026
24935d7
Mark the four HSSS searches as SNV-only in their display names
jbrestel Aug 8, 2026
bfb8418
Name the region and gene SNV searches for what they compute
jbrestel Aug 8, 2026
652c1c2
Merge branch 'feature/variant-rename' into dnaseq-merge-experiments
jbrestel Aug 8, 2026
7312822
Rename the GenesByNgsSnps display name to SNV Characteristics
jbrestel Aug 8, 2026
0cf8251
Add GenesByVariantCharacteristics, a precomputed SNV characteristics …
jbrestel Aug 8, 2026
0520b48
Use the transcript record's own variation attributes, not new dynamic…
jbrestel Aug 8, 2026
c319350
Declare span_snp_density on the GenesByNgsSnps process query
jbrestel Aug 8, 2026
1827678
Label the GenesByNgsSnps result columns for what they now compute
jbrestel Aug 8, 2026
052be33
Label the GenesByNgsSnps params for what they now filter
jbrestel Aug 8, 2026
06cca80
Point the GenesByNgsSnps description at the normalized ratio
jbrestel Aug 8, 2026
186d484
Drop the synonymous-site-fraction figures from the GenesByNgsSnps des…
jbrestel Aug 8, 2026
2dea527
Mark the GenesByNgsSnps result columns as per-sample-group
jbrestel Aug 8, 2026
83974cb
Merge remote-tracking branch 'origin/master' into dnaseq-merge-experi…
jbrestel Aug 8, 2026
37cc0e8
Map EDA's date data_type in the sample ontology query
jbrestel Aug 10, 2026
58a5b93
Inject only per-dataset dnaseq props, not per-sample
jbrestel Aug 10, 2026
21047fd
Let coverage track callers override derived labels and metadata
jbrestel Aug 10, 2026
566494f
Add variant glyph and effect-class colour functions
jbrestel Aug 10, 2026
c8baece
Make the VCF glyph overridable and raise its rendering ceilings
jbrestel Aug 10, 2026
351d2e9
Build dnaseq tracks from the webservices tree
jbrestel Aug 10, 2026
9e45584
Request the dnaseq tracks in the default JBrowse track set
jbrestel Aug 10, 2026
e48a660
Drop VCFStore's unread chunk size limit
jbrestel Aug 10, 2026
943c3a9
Serve the merged short-variant VCF from organismSpecific, not dnaseq
jbrestel Aug 10, 2026
d7734de
Point the gene and span SNP links at the merged variant track
jbrestel Aug 10, 2026
9d1e0ca
Rename the precomputed search to "Short Variant Characteristics"
jbrestel Aug 10, 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
6 changes: 5 additions & 1 deletion Model/bin/jbrowseTracks
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ else {
);
}
elsif($tracks eq 'syntenyTracks' || $tracks eq 'geneticVariationTracks') {
# geneticVariationTracks deliberately does NOT include the dnaseq endpoint. The merged
# short-variant VCF is served by organismSpecific, so this set already has it, and
# staying out of dnaseq keeps the gene page's SNP link at ~100 track configs instead of
# ~1600 per-sample coverage and density ones.
@include = ("/a/jbrowse/tracks/${organismAbbrev}/tracks.conf",
"/a/service/jbrowse/organismSpecific/${organismAbbrev}",
"/a/jbrowse/jbrowse_embed.conf"
Expand Down Expand Up @@ -118,7 +122,7 @@ else {
}
else {
@include = ("/a/jbrowse/tracks/${organismAbbrev}/tracks.conf",
# "/a/service/jbrowse/dnaseq/${organismAbbrev}",
"/a/service/jbrowse/dnaseq/${organismAbbrev}",
"/a/service/jbrowse/rnaseq/${organismAbbrev}",
"/a/service/jbrowse/chipseq/${organismAbbrev}",
"/a/service/jbrowse/rnaseqJunctions/${organismAbbrev}",
Expand Down
17 changes: 6 additions & 11 deletions Model/lib/dst/jbrowse.dst
Original file line number Diff line number Diff line change
Expand Up @@ -98,28 +98,23 @@ prop=datasetName
prop=datasetDisplayName
prop=shortAttribution
prop=summary
prop=hasCNVData
>templateTextStart<
dnaseq::${datasetName}::datasetName=${datasetName}
dnaseq::${datasetName}::datasetDisplayName=${datasetDisplayName}
dnaseq::${datasetName}::shortAttribution=${shortAttribution}
dnaseq::${datasetName}::summary=${summary}
dnaseq::${datasetName}::hasCNVData=${hasCNVData}
dnaseq::${datasetName}::category=Genetic Variation
dnaseq::${datasetName}::yScalePosition=left
dnaseq::${datasetName}::chunkSizeLimit=50000000
dnaseq::${datasetName}::subCategory=DNA-Seq
>templateTextEnd<

[templateStart]
name=jbrowseDnaSeqSampleBuildProps
anchorFile=ApiCommonModel/Model/lib/jbrowse/auto_generated/${organismAbbrev}/datasetAndPresenterProps.conf
prop=organismAbbrev
prop=datasetName
prop=sampleName
>templateTextStart<
dnaseq::${datasetName}::sampleNames::${sampleName}=${sampleName}
>templateTextEnd<
# NOTE: there is deliberately no per-sample dnaseq template. The sample list, and which
# measures each sample has, are read from the webservices tree at request time by
# JbrowseDnaSeqTracks.pm - the pipeline that writes those files is the only thing that
# knows them, and LOH in particular exists only for diploid organisms. hasCNVData is
# likewise not emitted: presenters still declare it but _normalisedCoverage.bw is now
# written regardless, so the flag no longer describes the data.

[templateStart]
name=jbrowseChipChipExperSampleBuildProps
Expand Down
4 changes: 3 additions & 1 deletion Model/lib/jbrowse/datasetAndPresenterProps.conf
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

# TEMPLATE_ANCHOR jbrowseDnaSeqBuildProps

# TEMPLATE_ANCHOR jbrowseDnaSeqSampleBuildProps
# NOTE: there is deliberately no jbrowseDnaSeqSampleBuildProps anchor. Per-sample dnaseq
# properties are not injected; JbrowseDnaSeqTracks.pm reads the sample list, and which
# measures each sample has, from the webservices tree at request time.

# TEMPLATE_ANCHOR jbrowseChipChipExperSampleBuildProps

Expand Down
68 changes: 68 additions & 0 deletions Model/lib/jbrowse/functions.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2274,3 +2274,71 @@ auxiliaryUtrColor = function( feature, variableName, glyphObject, track ) {
return strand == 1 ? "dodgerblue" : "tomato";
}


# --- Short variant tracks (the dnaseq pipeline's merged annotated VCF) ----------------
# Both the shape and the colour of a variant are resolved PER FEATURE by JBrowse
# (CanvasFeatures getGlyph/getStyle both go through getConfForFeature), so a single track
# can mix glyphs and colours rather than needing one track per variant class.

# Both are deliberately self-contained rather than delegating through
# track.browser.config the way snpColorFxn does. getConfForFeature does not always supply
# the track argument - resolving glyph through it passes a null track - and neither
# function needs anything but the feature, so a track deref would only add a way to throw.
#
# JBrowse's VCF parser types variants for us; the values it emits are exactly 'SNV',
# 'insertion' and 'deletion'. Substitutions get a diamond, indels a box - a box also
# reads better for an indel because it renders at the variant's real width, whereas an
# SNV is always one base.
variantGlyphFxn = function( feature, variableName, glyphObject, track ) {
return feature.get("type") === "SNV"
? "EbrcTracks/View/FeatureGlyph/Diamond"
: "JBrowse/View/FeatureGlyph/Box";
}

# Colour by EFFECT CLASS, following the varianteffect plugin's convention: green
# synonymous, purple non-synonymous, red truncating, blue intron/other. Read from
# snpEff's Annotation (field 2 of each pipe-delimited ANN entry), not Annotation_Impact
# (field 3) - impact only has four ordinal levels and rendered as a warm ramp its top two
# were indistinguishable at glyph size.
#
# The exact hexes matter. The plugin's nominal green/red pair sits at deltaE 3.3 under
# deuteranopia - a hard fail, on the single most consequential pair here (a silent change
# vs a truncation). Under deuteranopia red and green separate mainly by LIGHTNESS, so red
# is deliberately dark (#b71c1c): that lifts the worst all-pairs separation to deltaE 9.7
# with every colour clearing 3:1 on white. Do not "brighten" the red without re-running
# the check.
#
# A variant may carry several ANN entries, one per affected transcript, and snpEff joins
# compound effects on '&' - so scan every entry for the most severe class rather than
# trusting the first. Tests run most-severe-first, which is what makes the compound case
# (missense_variant&splice_region_variant -> non-synonymous) fall out correctly.
#
# NOTE: no blank lines inside the function body. A blank line terminates a multi-line
# value in this file's parser, so the value would be truncated mid-function, fail to
# compile, and be left as a plain string - silently, with the track then rendering in a
# default colour. No existing function here contains one either.
variantEffectColorFxn = function( feature, variableName, glyphObject, track ) {
var truncatingColor = '#b71c1c';
var nonSynonymousColor = '#7b3294';
var synonymousColor = '#43a047';
var otherColor = '#2c7bb6';
var ann = feature.get("ANN");
var entries = ann && ann.values ? ann.values : null;
if (!entries || !entries.length) {
return otherColor;
}
var effects = '';
for (var i = 0; i < entries.length; i++) {
effects = effects + '&' + String(entries[i]).split("|")[1];
}
if (/stop_gained|stop_lost|start_lost|frameshift|splice_acceptor|splice_donor|exon_loss|transcript_ablation/.test(effects)) {
return truncatingColor;
}
if (/missense|inframe_insertion|inframe_deletion|protein_altering|rare_amino_acid|initiator_codon/.test(effects)) {
return nonSynonymousColor;
}
if (/synonymous_variant|stop_retained|start_retained/.test(effects)) {
return synonymousColor;
}
return otherColor;
}
23 changes: 21 additions & 2 deletions Model/lib/perl/JBrowseTrackConfig/MultiBigWigTrackConfig.pm
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,21 @@ sub new {

my $alignmentDisplay;

# has_alignment => 0 is for callers with no read-alignment split at all (dnaseq).
# Without it every track claims "unique and non-unique", which then shows up as an
# RNA-Seq Alignment facet value on a track that has no such notion.
my $hasAlignment = exists($args->{has_alignment}) ? $args->{has_alignment} : 1;

if($alignment && $alignment eq 'unique') {
$alignmentDisplay = "Unique Only";
}
else {
}
elsif($hasAlignment) {
$alignmentDisplay = "Unique And Non-Unique";
$self->setAlignment("unique and non-unique");
}
else {
$alignmentDisplay = "";
}

my $subclassName = ref($self);
if($subclassName =~ /Density/) {
Expand All @@ -63,6 +71,17 @@ sub new {

}

# Explicit label/id/track type win, and are applied last so they also beat the
# jbrowse2 branch above. Every derived form is keyed on the DATASET, which is fine
# for one multi track per dataset but collides immediately for a caller emitting one
# per sample - label is the JBrowse track id and must be unique across the response.
#
# NOTE track_type_display is deliberately NOT overridable here: the ::Density and ::XY
# subclasses set it after SUPER::new returns, so anything set here would be silently
# clobbered. A caller wanting its own wording calls setTrackTypeDisplay on the
# constructed object instead.
$self->setLabel($args->{label}) if(defined($args->{label}) && length($args->{label}));
$self->setId($args->{id}) if(defined($args->{id}) && length($args->{id}));

return $self;
}
Expand Down
22 changes: 19 additions & 3 deletions Model/lib/perl/JBrowseTrackConfig/SingleCoverageTrackConfig.pm
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,30 @@ sub new {
$self->setId("$studyDisplayName - $displayName $displayNameSuffix");
}

if ($dbid){
$self->setLabel("$datasetName $dbid Coverage");
# An explicit label wins. label is the JBrowse track id, so it must be unique across
# the whole response; callers that emit several tracks per sample (dnaseq emits up to
# five measures each) need that uniqueness by construction rather than by luck of the
# sample names happening to be distinct. Both derived forms below remain the default,
# so existing callers are unaffected.
if (defined($args->{label}) && length($args->{label})) {
$self->setLabel($args->{label});
}
elsif ($dbid){
$self->setLabel("$datasetName $dbid Coverage");
}
else {
$self->setLabel("$displayName $displayNameSuffix");
}

if (!defined($order) && !defined($dbid)) {
# An explicit track type display wins; this string is shown to users in the track
# selector. The ploidy-normalised default below is only correct for the CNV coverage
# track, which was the sole order-less and dbid-less caller when it was written; a
# caller emitting other per-sample measures (SNP density, LOH, ...) must be able to
# say what its track actually is instead of inheriting that label.
if (defined($args->{track_type_display}) && length($args->{track_type_display})) {
$self->setTrackTypeDisplay($args->{track_type_display});
}
elsif (!defined($order) && !defined($dbid)) {
$self->setTrackTypeDisplay("Coverage (ploidy Normalized)");;
}

Expand Down
78 changes: 0 additions & 78 deletions Model/lib/perl/JBrowseTrackConfig/UnifiedSnpTrackConfig.pm

This file was deleted.

7 changes: 3 additions & 4 deletions Model/lib/perl/JBrowseTrackConfig/VCFStore.pm
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,16 @@ sub setUrlTemplate {
}


sub getChunkSizeLimit {$_[0]->{chunk_size_limit} }
sub setChunkSizeLimit {$_[0]->{chunk_size_limit} = $_[1]}

sub new {
my ($class, $args) = @_;
my $self = $class->SUPER::new($args);

#$self->setUrlTemplate($args->{url_template});
#$self->setType("JBrowse/View/Track/CanvasVariants");

$self->setChunkSizeLimit(10000000);
# NOTE: chunkSizeLimit is not set here. It is emitted by VcfTrackConfig, which is what
# actually reaches the track config; this class used to set a chunk_size_limit that
# nothing ever read, so raising it here looked effective and did nothing.

if($self->getApplicationType() eq 'jbrowse' || $self->getApplicationType() eq 'apollo') {
$self->setStoreType("JBrowse/Store/SeqFeature/VCFTabix");
Expand Down
33 changes: 30 additions & 3 deletions Model/lib/perl/JBrowseTrackConfig/VcfTrackConfig.pm
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,19 @@ sub new {
}

$self->setStore($store);
$self->setGlyph("EbrcTracks/View/FeatureGlyph/Diamond");
$self->setTrackTypeDisplay("VCF from VectorBase");

# A caller may supply its own glyph, including a "{someFxn}" reference resolved per
# feature, so one track can shape SNVs and indels differently. Defaults to the diamond
# every existing caller expects.
$self->setGlyph($args->{glyph} ? $args->{glyph} : "EbrcTracks/View/FeatureGlyph/Diamond");

# The historic default names VectorBase because the only caller was VectorBase's
# per-sample ebi_VCF tracks. It is shown to users in the track selector, so a caller
# serving some other VCF must be able to say what it actually is rather than
# mislabel it.
$self->setTrackTypeDisplay($args->{track_type_display}
? $args->{track_type_display}
: "VCF from VectorBase");

return $self;
}
Expand All @@ -50,7 +61,23 @@ sub getJBrowseObject{
my $jbrowseObject = $self->SUPER::getJBrowseObject();

$jbrowseObject->{urlTemplate}= $self->getStore()->getUrlTemplate();
$jbrowseObject->{chunkSizeLimit} = '10000000';

# Store-level fetch ceilings, not allocations: when a region needs more than this the
# store abandons it rather than rendering. The merged multi-sample call sets are far
# larger than the per-sample VCFs these were first sized for. Emitted as numbers
# rather than the quoted string this used to send.
$jbrowseObject->{chunkSizeLimit} = 50000000;
$jbrowseObject->{fetchSizeLimit} = 150000000;

# This - NOT chunkSizeLimit - is what produces "Too many features to show" when zoomed
# out. CanvasFeatures.fillBlock refuses to draw a block whose feature density exceeds
# it, and the JBrowse default is 0.5 features/pixel. The merged call set runs about 6.8
# variants/kb, so in a ~1000px window a 300kb view is already ~2 features/pixel and a
# full 3.3Mb P. falciparum chromosome is ~22 - both far past 0.5. 50 clears a whole
# chromosome with roughly 2x headroom. Deliberately not the 9999999 that
# RNASeqJunctionTrackConfig uses: that invites drawing 100k+ glyphs at genome scale.
$jbrowseObject->{maxFeatureScreenDensity} = 50;

$jbrowseObject->{glyph} = $self->getGlyph();
return $jbrowseObject;
}
Expand Down
Loading