@jbrowse/plugin-variants 4.0.4 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/esm/LDDisplay/SharedLDConfigSchema.d.ts +102 -0
  2. package/esm/LDDisplay/SharedLDConfigSchema.js +83 -0
  3. package/esm/LDDisplay/afterAttach.d.ts +2 -0
  4. package/esm/LDDisplay/afterAttach.js +123 -0
  5. package/esm/LDDisplay/components/BaseDisplayComponent.d.ts +15 -0
  6. package/esm/LDDisplay/components/BaseDisplayComponent.js +39 -0
  7. package/esm/LDDisplay/components/LDColorLegend.d.ts +15 -0
  8. package/esm/LDDisplay/components/LDColorLegend.js +75 -0
  9. package/esm/LDDisplay/components/LDDisplayComponent.d.ts +5 -0
  10. package/esm/LDDisplay/components/LDDisplayComponent.js +203 -0
  11. package/esm/LDDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +16 -0
  12. package/esm/LDDisplay/components/LinesConnectingMatrixToGenomicPosition.js +109 -0
  13. package/esm/LDDisplay/configSchema1.d.ts +115 -0
  14. package/esm/LDDisplay/configSchema1.js +16 -0
  15. package/esm/LDDisplay/configSchema2.d.ts +115 -0
  16. package/esm/LDDisplay/configSchema2.js +16 -0
  17. package/esm/LDDisplay/index.d.ts +2 -0
  18. package/esm/LDDisplay/index.js +35 -0
  19. package/esm/LDDisplay/renderSvg.d.ts +3 -0
  20. package/esm/LDDisplay/renderSvg.js +36 -0
  21. package/esm/LDDisplay/shared.d.ts +367 -0
  22. package/esm/LDDisplay/shared.js +467 -0
  23. package/esm/LDDisplay/stateModel1.d.ts +365 -0
  24. package/esm/LDDisplay/stateModel1.js +10 -0
  25. package/esm/LDDisplay/stateModel2.d.ts +365 -0
  26. package/esm/LDDisplay/stateModel2.js +10 -0
  27. package/esm/LDRenderer/LDRenderer.d.ts +30 -0
  28. package/esm/LDRenderer/LDRenderer.js +109 -0
  29. package/esm/LDRenderer/components/LDRendering.d.ts +2 -0
  30. package/esm/LDRenderer/components/LDRendering.js +4 -0
  31. package/esm/LDRenderer/configSchema.d.ts +8 -0
  32. package/esm/LDRenderer/configSchema.js +10 -0
  33. package/esm/LDRenderer/index.d.ts +2 -0
  34. package/esm/LDRenderer/index.js +11 -0
  35. package/esm/LDRenderer/makeImageData.d.ts +20 -0
  36. package/esm/LDRenderer/makeImageData.js +157 -0
  37. package/esm/LDRenderer/types.d.ts +8 -0
  38. package/esm/LDRenderer/types.js +1 -0
  39. package/esm/LDTrack/configSchema.d.ts +85 -0
  40. package/esm/LDTrack/configSchema.js +7 -0
  41. package/esm/LDTrack/index.d.ts +2 -0
  42. package/esm/LDTrack/index.js +14 -0
  43. package/esm/LinearVariantDisplay/model.d.ts +126 -42
  44. package/esm/LinearVariantDisplay/model.js +46 -8
  45. package/esm/MultiLinearVariantDisplay/configSchema.d.ts +27 -1
  46. package/esm/MultiLinearVariantDisplay/model.d.ts +2635 -31
  47. package/esm/MultiLinearVariantDisplay/model.js +6 -0
  48. package/esm/MultiLinearVariantDisplay/renderSvg.d.ts +10 -2
  49. package/esm/MultiLinearVariantMatrixDisplay/configSchema.d.ts +25 -0
  50. package/esm/MultiLinearVariantMatrixDisplay/configSchema.js +26 -0
  51. package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +2636 -32
  52. package/esm/MultiLinearVariantMatrixDisplay/model.js +6 -0
  53. package/esm/MultiLinearVariantMatrixRenderer/MultiLinearVariantMatrixRenderer.d.ts +2 -2
  54. package/esm/MultiLinearVariantMatrixRenderer/MultiLinearVariantMatrixRenderer.js +11 -9
  55. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
  56. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +14 -2
  57. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +8 -11
  58. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +2 -2
  59. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +4 -3
  60. package/esm/MultiLinearVariantRenderer/components/MultiLinearVariantRendering.d.ts +4 -0
  61. package/esm/MultiLinearVariantRenderer/components/MultiLinearVariantRendering.js +23 -2
  62. package/esm/MultiLinearVariantRenderer/makeImageData.js +12 -12
  63. package/esm/PlinkLDAdapter/PlinkLDAdapter.d.ts +25 -0
  64. package/esm/PlinkLDAdapter/PlinkLDAdapter.js +147 -0
  65. package/esm/PlinkLDAdapter/PlinkLDTabixAdapter.d.ts +24 -0
  66. package/esm/PlinkLDAdapter/PlinkLDTabixAdapter.js +156 -0
  67. package/esm/PlinkLDAdapter/configSchema.d.ts +10 -0
  68. package/esm/PlinkLDAdapter/configSchema.js +25 -0
  69. package/esm/PlinkLDAdapter/configSchemaTabix.d.ts +24 -0
  70. package/esm/PlinkLDAdapter/configSchemaTabix.js +46 -0
  71. package/esm/PlinkLDAdapter/index.d.ts +2 -0
  72. package/esm/PlinkLDAdapter/index.js +25 -0
  73. package/esm/PlinkLDAdapter/types.d.ts +29 -0
  74. package/esm/PlinkLDAdapter/types.js +1 -0
  75. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +1 -1
  76. package/esm/VariantRPC/MultiVariantGetFeatureDetails.d.ts +14 -0
  77. package/esm/VariantRPC/MultiVariantGetFeatureDetails.js +15 -0
  78. package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +4 -1
  79. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +3 -3
  80. package/esm/VariantRPC/executeClusterGenotypeMatrix.js +6 -3
  81. package/esm/VariantRPC/getGenotypeMatrix.d.ts +2 -3
  82. package/esm/VariantRPC/getGenotypeMatrix.js +4 -5
  83. package/esm/VariantRPC/getLDMatrix.d.ts +47 -0
  84. package/esm/VariantRPC/getLDMatrix.js +387 -0
  85. package/esm/VariantRPC/getLDMatrixFromPlink.d.ts +16 -0
  86. package/esm/VariantRPC/getLDMatrixFromPlink.js +105 -0
  87. package/esm/VariantRPC/getPhasedGenotypeMatrix.d.ts +2 -3
  88. package/esm/VariantRPC/getPhasedGenotypeMatrix.js +4 -5
  89. package/esm/VariantRPC/types.d.ts +3 -0
  90. package/esm/VcfAdapter/VcfAdapter.d.ts +1 -1
  91. package/esm/VcfAdapter/VcfAdapter.js +1 -2
  92. package/esm/VcfExtensionPoints/index.js +29 -3
  93. package/esm/VcfFeature/index.d.ts +2 -1
  94. package/esm/VcfFeature/index.js +4 -2
  95. package/esm/index.d.ts +1 -0
  96. package/esm/index.js +23 -0
  97. package/esm/shared/MultiVariantBaseModel.d.ts +2626 -26
  98. package/esm/shared/MultiVariantBaseModel.js +88 -39
  99. package/esm/shared/SharedVariantConfigSchema.d.ts +27 -1
  100. package/esm/shared/SharedVariantConfigSchema.js +28 -1
  101. package/esm/shared/VariantFeatureCache.d.ts +27 -0
  102. package/esm/shared/VariantFeatureCache.js +48 -0
  103. package/esm/shared/VariantRendererType.d.ts +23 -0
  104. package/esm/shared/VariantRendererType.js +15 -0
  105. package/esm/shared/applyColorPalette.d.ts +9 -0
  106. package/esm/shared/applyColorPalette.js +23 -0
  107. package/esm/shared/colorByAutorun.d.ts +10 -0
  108. package/esm/shared/colorByAutorun.js +39 -0
  109. package/esm/shared/components/AddFiltersDialog.d.ts +3 -3
  110. package/esm/shared/components/AddFiltersDialog.js +29 -22
  111. package/esm/shared/components/LDFilterDialog.d.ts +13 -0
  112. package/esm/shared/components/LDFilterDialog.js +102 -0
  113. package/esm/shared/components/MAFFilterDialog.js +23 -16
  114. package/esm/shared/components/RecombinationTrack.d.ts +21 -0
  115. package/esm/shared/components/RecombinationTrack.js +54 -0
  116. package/esm/shared/components/RecombinationYScaleBar.d.ts +7 -0
  117. package/esm/shared/components/RecombinationYScaleBar.js +34 -0
  118. package/esm/shared/components/SetColorDialogRowPalettizer.d.ts +3 -8
  119. package/esm/shared/components/SetColorDialogRowPalettizer.js +2 -14
  120. package/esm/shared/drawAlleleCount.js +9 -0
  121. package/esm/shared/drawPhased.d.ts +1 -1
  122. package/esm/shared/drawPhased.js +31 -2
  123. package/esm/shared/mafFilterUtils.d.ts +5 -0
  124. package/esm/shared/mafFilterUtils.js +17 -0
  125. package/esm/shared/minorAlleleFrequencyUtils.d.ts +4 -2
  126. package/esm/shared/minorAlleleFrequencyUtils.js +261 -19
  127. package/esm/shared/setupMultiVariantAutoruns.js +2 -0
  128. package/package.json +11 -10
@@ -0,0 +1,467 @@
1
+ import { ConfigurationReference, getConf } from '@jbrowse/core/configuration';
2
+ import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes';
3
+ import { getSession } from '@jbrowse/core/util';
4
+ import { cast, types } from '@jbrowse/mobx-state-tree';
5
+ import { NonBlockCanvasDisplayMixin, TrackHeightMixin, } from '@jbrowse/plugin-linear-genome-view';
6
+ import AddFiltersDialog from "../shared/components/AddFiltersDialog.js";
7
+ import LDFilterDialog from "../shared/components/LDFilterDialog.js";
8
+ export default function sharedModelFactory(configSchema) {
9
+ return types
10
+ .compose('SharedLDModel', BaseDisplay, TrackHeightMixin(), NonBlockCanvasDisplayMixin(), types.model({
11
+ configuration: ConfigurationReference(configSchema),
12
+ minorAlleleFrequencyFilterSetting: types.maybe(types.number),
13
+ lengthCutoffFilterSetting: types.maybe(types.number),
14
+ lineZoneHeightSetting: types.maybe(types.number),
15
+ ldMetricSetting: types.maybe(types.string),
16
+ colorSchemeSetting: types.maybe(types.string),
17
+ showLegendSetting: types.maybe(types.boolean),
18
+ showLDTriangleSetting: types.maybe(types.boolean),
19
+ showRecombinationSetting: types.maybe(types.boolean),
20
+ recombinationZoneHeightSetting: types.maybe(types.number),
21
+ fitToHeightSetting: types.maybe(types.boolean),
22
+ hweFilterThresholdSetting: types.maybe(types.number),
23
+ callRateFilterSetting: types.maybe(types.number),
24
+ showVerticalGuidesSetting: types.maybe(types.boolean),
25
+ showLabelsSetting: types.maybe(types.boolean),
26
+ tickHeightSetting: types.maybe(types.number),
27
+ useGenomicPositionsSetting: types.maybe(types.boolean),
28
+ signedLDSetting: types.maybe(types.boolean),
29
+ jexlFiltersSetting: types.maybe(types.array(types.string)),
30
+ }))
31
+ .volatile(() => ({
32
+ flatbush: undefined,
33
+ flatbushItems: [],
34
+ snps: [],
35
+ maxScore: 1,
36
+ yScalar: 1,
37
+ cellWidth: 0,
38
+ error: undefined,
39
+ filterStats: undefined,
40
+ recombination: undefined,
41
+ }))
42
+ .actions(self => ({
43
+ setFlatbushData(flatbush, items, snps, maxScore, yScalar, cellWidth) {
44
+ self.flatbush = flatbush;
45
+ self.flatbushItems = items;
46
+ self.snps = snps;
47
+ self.maxScore = maxScore;
48
+ self.yScalar = yScalar;
49
+ self.cellWidth = cellWidth;
50
+ },
51
+ setLineZoneHeight(n) {
52
+ self.lineZoneHeightSetting = Math.max(0, n);
53
+ },
54
+ setError(error) {
55
+ self.error = error;
56
+ },
57
+ reload() {
58
+ self.error = undefined;
59
+ },
60
+ setMafFilter(arg) {
61
+ self.minorAlleleFrequencyFilterSetting = arg;
62
+ },
63
+ setLengthCutoffFilter(arg) {
64
+ self.lengthCutoffFilterSetting = arg;
65
+ },
66
+ setLDMetric(metric) {
67
+ self.ldMetricSetting = metric;
68
+ },
69
+ setColorScheme(scheme) {
70
+ self.colorSchemeSetting = scheme;
71
+ },
72
+ setShowLegend(show) {
73
+ self.showLegendSetting = show;
74
+ },
75
+ setShowLDTriangle(show) {
76
+ self.showLDTriangleSetting = show;
77
+ },
78
+ setShowRecombination(show) {
79
+ self.showRecombinationSetting = show;
80
+ },
81
+ setRecombinationZoneHeight(n) {
82
+ self.recombinationZoneHeightSetting = Math.max(20, n);
83
+ },
84
+ setFitToHeight(value) {
85
+ self.fitToHeightSetting = value;
86
+ },
87
+ setHweFilter(threshold) {
88
+ self.hweFilterThresholdSetting = threshold;
89
+ },
90
+ setCallRateFilter(threshold) {
91
+ self.callRateFilterSetting = threshold;
92
+ },
93
+ setFilterStats(stats) {
94
+ self.filterStats = stats;
95
+ },
96
+ setRecombination(data) {
97
+ self.recombination = data;
98
+ },
99
+ setShowVerticalGuides(show) {
100
+ self.showVerticalGuidesSetting = show;
101
+ },
102
+ setShowLabels(show) {
103
+ self.showLabelsSetting = show;
104
+ },
105
+ setTickHeight(height) {
106
+ self.tickHeightSetting = Math.max(0, height);
107
+ },
108
+ setUseGenomicPositions(value) {
109
+ self.useGenomicPositionsSetting = value;
110
+ },
111
+ setSignedLD(value) {
112
+ self.signedLDSetting = value;
113
+ },
114
+ setJexlFilters(filters) {
115
+ self.jexlFiltersSetting = cast(filters);
116
+ },
117
+ }))
118
+ .views(self => ({
119
+ get blockType() {
120
+ return 'dynamicBlocks';
121
+ },
122
+ get prefersOffset() {
123
+ return true;
124
+ },
125
+ get rendererTypeName() {
126
+ return 'LDRenderer';
127
+ },
128
+ get rendererConfig() {
129
+ return getConf(self, 'renderer');
130
+ },
131
+ get regionTooLarge() {
132
+ return false;
133
+ },
134
+ get minorAlleleFrequencyFilter() {
135
+ return (self.minorAlleleFrequencyFilterSetting ??
136
+ getConf(self, 'minorAlleleFrequencyFilter'));
137
+ },
138
+ get lengthCutoffFilter() {
139
+ return (self.lengthCutoffFilterSetting ?? getConf(self, 'lengthCutoffFilter'));
140
+ },
141
+ get lineZoneHeight() {
142
+ return self.lineZoneHeightSetting ?? getConf(self, 'lineZoneHeight');
143
+ },
144
+ get ldMetric() {
145
+ return self.ldMetricSetting ?? getConf(self, 'ldMetric');
146
+ },
147
+ get colorScheme() {
148
+ const setting = self.colorSchemeSetting;
149
+ if (setting !== undefined) {
150
+ return setting || undefined;
151
+ }
152
+ const conf = getConf(self, 'colorScheme');
153
+ return conf || undefined;
154
+ },
155
+ get showLegend() {
156
+ return self.showLegendSetting ?? getConf(self, 'showLegend');
157
+ },
158
+ get showLDTriangle() {
159
+ return self.showLDTriangleSetting ?? getConf(self, 'showLDTriangle');
160
+ },
161
+ get showRecombination() {
162
+ return (self.showRecombinationSetting ?? getConf(self, 'showRecombination'));
163
+ },
164
+ get recombinationZoneHeight() {
165
+ return (self.recombinationZoneHeightSetting ??
166
+ getConf(self, 'recombinationZoneHeight'));
167
+ },
168
+ get fitToHeight() {
169
+ return self.fitToHeightSetting ?? getConf(self, 'fitToHeight');
170
+ },
171
+ get hweFilterThreshold() {
172
+ return (self.hweFilterThresholdSetting ?? getConf(self, 'hweFilterThreshold'));
173
+ },
174
+ get callRateFilter() {
175
+ return self.callRateFilterSetting ?? getConf(self, 'callRateFilter');
176
+ },
177
+ get showVerticalGuides() {
178
+ return (self.showVerticalGuidesSetting ?? getConf(self, 'showVerticalGuides'));
179
+ },
180
+ get showLabels() {
181
+ return self.showLabelsSetting ?? getConf(self, 'showLabels');
182
+ },
183
+ get tickHeight() {
184
+ return self.tickHeightSetting ?? getConf(self, 'tickHeight');
185
+ },
186
+ get useGenomicPositions() {
187
+ return (self.useGenomicPositionsSetting ??
188
+ getConf(self, 'useGenomicPositions'));
189
+ },
190
+ get signedLD() {
191
+ return self.signedLDSetting ?? getConf(self, 'signedLD');
192
+ },
193
+ get jexlFilters() {
194
+ return self.jexlFiltersSetting ?? getConf(self, 'jexlFilters');
195
+ },
196
+ get isPrecomputedLD() {
197
+ const adapterType = self.adapterConfig?.type;
198
+ return (adapterType === 'PlinkLDAdapter' ||
199
+ adapterType === 'PlinkLDTabixAdapter' ||
200
+ adapterType === 'LdmatAdapter');
201
+ },
202
+ regionCannotBeRendered() {
203
+ return null;
204
+ },
205
+ }))
206
+ .views(self => ({
207
+ get ldCanvasHeight() {
208
+ return Math.max(50, self.height - self.lineZoneHeight);
209
+ },
210
+ }))
211
+ .views(self => {
212
+ const { renderProps: superRenderProps } = self;
213
+ return {
214
+ filterMenuItems() {
215
+ if (self.isPrecomputedLD) {
216
+ return [];
217
+ }
218
+ return [
219
+ {
220
+ label: 'LD-specific filters...',
221
+ onClick: () => {
222
+ getSession(self).queueDialog(handleClose => [
223
+ LDFilterDialog,
224
+ {
225
+ model: self,
226
+ handleClose,
227
+ },
228
+ ]);
229
+ },
230
+ },
231
+ {
232
+ label: 'General JEXL filters...',
233
+ onClick: () => {
234
+ getSession(self).queueDialog(handleClose => [
235
+ AddFiltersDialog,
236
+ {
237
+ model: self,
238
+ handleClose,
239
+ },
240
+ ]);
241
+ },
242
+ },
243
+ ];
244
+ },
245
+ renderProps() {
246
+ return {
247
+ ...superRenderProps(),
248
+ config: self.rendererConfig,
249
+ ...(self.fitToHeight ? { displayHeight: self.ldCanvasHeight } : {}),
250
+ minorAlleleFrequencyFilter: self.minorAlleleFrequencyFilter,
251
+ lengthCutoffFilter: self.lengthCutoffFilter,
252
+ hweFilterThreshold: self.hweFilterThreshold,
253
+ callRateFilter: self.callRateFilter,
254
+ jexlFilters: self.jexlFilters,
255
+ ldMetric: self.ldMetric,
256
+ colorScheme: self.colorScheme,
257
+ fitToHeight: self.fitToHeight,
258
+ useGenomicPositions: self.useGenomicPositions,
259
+ signedLD: self.signedLD,
260
+ };
261
+ },
262
+ };
263
+ })
264
+ .views(self => {
265
+ const { trackMenuItems: superTrackMenuItems } = self;
266
+ return {
267
+ trackMenuItems() {
268
+ return [
269
+ ...superTrackMenuItems(),
270
+ {
271
+ label: 'LD metric',
272
+ type: 'subMenu',
273
+ subMenu: [
274
+ {
275
+ label: 'R² (squared correlation)',
276
+ type: 'radio',
277
+ checked: self.ldMetric === 'r2',
278
+ onClick: () => {
279
+ self.setLDMetric('r2');
280
+ },
281
+ },
282
+ {
283
+ label: "D' (normalized D)",
284
+ type: 'radio',
285
+ checked: self.ldMetric === 'dprime',
286
+ onClick: () => {
287
+ self.setLDMetric('dprime');
288
+ },
289
+ },
290
+ ],
291
+ },
292
+ {
293
+ label: 'Show...',
294
+ type: 'subMenu',
295
+ subMenu: [
296
+ {
297
+ label: 'Show LD triangle',
298
+ type: 'checkbox',
299
+ checked: self.showLDTriangle,
300
+ onClick: () => {
301
+ self.setShowLDTriangle(!self.showLDTriangle);
302
+ },
303
+ },
304
+ {
305
+ label: 'Show recombination track',
306
+ helpText: 'Displays 1-r² between neighboring SNPs only (not all pairwise comparisons). Peaks indicate haplotype block boundaries where historical recombination has broken down LD between adjacent variants.',
307
+ type: 'checkbox',
308
+ checked: self.showRecombination,
309
+ onClick: () => {
310
+ self.setShowRecombination(!self.showRecombination);
311
+ },
312
+ },
313
+ {
314
+ label: 'Show legend',
315
+ type: 'checkbox',
316
+ checked: self.showLegend,
317
+ onClick: () => {
318
+ self.setShowLegend(!self.showLegend);
319
+ },
320
+ },
321
+ {
322
+ label: 'LD triangle adjusted to display height',
323
+ type: 'checkbox',
324
+ checked: self.fitToHeight,
325
+ onClick: () => {
326
+ self.setFitToHeight(!self.fitToHeight);
327
+ },
328
+ },
329
+ {
330
+ label: 'Vertical guides on hover',
331
+ type: 'checkbox',
332
+ checked: self.showVerticalGuides,
333
+ onClick: () => {
334
+ self.setShowVerticalGuides(!self.showVerticalGuides);
335
+ },
336
+ },
337
+ {
338
+ label: 'Variant labels',
339
+ type: 'checkbox',
340
+ checked: self.showLabels,
341
+ onClick: () => {
342
+ self.setShowLabels(!self.showLabels);
343
+ },
344
+ },
345
+ {
346
+ label: 'Use genomic positions for cell sizes',
347
+ type: 'checkbox',
348
+ checked: self.useGenomicPositions,
349
+ onClick: () => {
350
+ self.setUseGenomicPositions(!self.useGenomicPositions);
351
+ },
352
+ },
353
+ ...(self.isPrecomputedLD
354
+ ? []
355
+ : [
356
+ {
357
+ label: 'Show signed LD values (-1 to 1)',
358
+ helpText: "When enabled, shows R (correlation) instead of R², and preserves the sign of D'. Positive values indicate alleles tend to co-occur (coupling), negative values indicate alleles tend to be on different haplotypes (repulsion).",
359
+ type: 'checkbox',
360
+ checked: self.signedLD,
361
+ onClick: () => {
362
+ self.setSignedLD(!self.signedLD);
363
+ },
364
+ },
365
+ ]),
366
+ ],
367
+ },
368
+ ...(self.isPrecomputedLD
369
+ ? []
370
+ : [
371
+ {
372
+ label: 'Filter by...',
373
+ type: 'subMenu',
374
+ subMenu: self.filterMenuItems(),
375
+ },
376
+ ]),
377
+ ];
378
+ },
379
+ async renderSvg(opts) {
380
+ const { renderSvg } = await import("./renderSvg.js");
381
+ return renderSvg(self, opts);
382
+ },
383
+ };
384
+ })
385
+ .actions(self => ({
386
+ afterAttach() {
387
+ ;
388
+ (async () => {
389
+ try {
390
+ const { doAfterAttach } = await import("./afterAttach.js");
391
+ doAfterAttach(self);
392
+ }
393
+ catch (e) {
394
+ console.error(e);
395
+ getSession(self).notifyError(`${e}`, e);
396
+ }
397
+ })();
398
+ },
399
+ }))
400
+ .postProcessSnapshot(snap => {
401
+ if (!snap) {
402
+ return snap;
403
+ }
404
+ const { minorAlleleFrequencyFilterSetting, lengthCutoffFilterSetting, lineZoneHeightSetting, ldMetricSetting, colorSchemeSetting, showLegendSetting, showLDTriangleSetting, showRecombinationSetting, recombinationZoneHeightSetting, fitToHeightSetting, hweFilterThresholdSetting, callRateFilterSetting, showVerticalGuidesSetting, showLabelsSetting, tickHeightSetting, useGenomicPositionsSetting, signedLDSetting, jexlFiltersSetting, ...rest } = snap;
405
+ return {
406
+ ...rest,
407
+ ...(minorAlleleFrequencyFilterSetting !== undefined &&
408
+ minorAlleleFrequencyFilterSetting !== 0.1
409
+ ? { minorAlleleFrequencyFilterSetting }
410
+ : {}),
411
+ ...(lengthCutoffFilterSetting !== undefined &&
412
+ lengthCutoffFilterSetting !== Number.MAX_SAFE_INTEGER
413
+ ? { lengthCutoffFilterSetting }
414
+ : {}),
415
+ ...(lineZoneHeightSetting !== undefined && lineZoneHeightSetting !== 100
416
+ ? { lineZoneHeightSetting }
417
+ : {}),
418
+ ...(ldMetricSetting !== undefined && ldMetricSetting !== 'r2'
419
+ ? { ldMetricSetting }
420
+ : {}),
421
+ ...(colorSchemeSetting !== undefined && colorSchemeSetting !== ''
422
+ ? { colorSchemeSetting }
423
+ : {}),
424
+ ...(showLegendSetting !== undefined && showLegendSetting
425
+ ? { showLegendSetting }
426
+ : {}),
427
+ ...(showLDTriangleSetting !== undefined && !showLDTriangleSetting
428
+ ? { showLDTriangleSetting }
429
+ : {}),
430
+ ...(showRecombinationSetting !== undefined && showRecombinationSetting
431
+ ? { showRecombinationSetting }
432
+ : {}),
433
+ ...(recombinationZoneHeightSetting !== undefined &&
434
+ recombinationZoneHeightSetting !== 50
435
+ ? { recombinationZoneHeightSetting }
436
+ : {}),
437
+ ...(fitToHeightSetting !== undefined && fitToHeightSetting
438
+ ? { fitToHeightSetting }
439
+ : {}),
440
+ ...(hweFilterThresholdSetting !== undefined &&
441
+ hweFilterThresholdSetting !== 0.001
442
+ ? { hweFilterThresholdSetting }
443
+ : {}),
444
+ ...(callRateFilterSetting !== undefined && callRateFilterSetting !== 0
445
+ ? { callRateFilterSetting }
446
+ : {}),
447
+ ...(showVerticalGuidesSetting !== undefined &&
448
+ !showVerticalGuidesSetting
449
+ ? { showVerticalGuidesSetting }
450
+ : {}),
451
+ ...(showLabelsSetting !== undefined && showLabelsSetting
452
+ ? { showLabelsSetting }
453
+ : {}),
454
+ ...(tickHeightSetting !== undefined && tickHeightSetting !== 6
455
+ ? { tickHeightSetting }
456
+ : {}),
457
+ ...(useGenomicPositionsSetting !== undefined &&
458
+ useGenomicPositionsSetting
459
+ ? { useGenomicPositionsSetting }
460
+ : {}),
461
+ ...(signedLDSetting !== undefined && signedLDSetting
462
+ ? { signedLDSetting }
463
+ : {}),
464
+ ...(jexlFiltersSetting?.length ? { jexlFiltersSetting } : {}),
465
+ };
466
+ });
467
+ }