@jbrowse/plugin-variants 3.1.0 → 3.3.0

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 (237) hide show
  1. package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +3 -3
  2. package/dist/MultiLinearVariantDisplay/index.js +1 -1
  3. package/dist/MultiLinearVariantDisplay/model.d.ts +58 -3
  4. package/dist/MultiLinearVariantDisplay/model.js +0 -1
  5. package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -2
  6. package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -5
  7. package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +3 -3
  8. package/dist/MultiLinearVariantMatrixDisplay/index.js +1 -1
  9. package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +59 -2
  10. package/dist/MultiLinearVariantMatrixDisplay/model.js +5 -1
  11. package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +2 -2
  12. package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
  13. package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
  14. package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +41 -0
  15. package/dist/MultiLinearVariantMatrixRenderer/index.js +4 -4
  16. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
  17. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +15 -8
  18. package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
  19. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
  20. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
  21. package/dist/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
  22. package/dist/MultiLinearVariantRenderer/{MultiVariantRendering.js → components/MultiLinearVariantRendering.js} +25 -7
  23. package/dist/MultiLinearVariantRenderer/components/util.d.ts +1 -0
  24. package/dist/MultiLinearVariantRenderer/components/util.js +15 -0
  25. package/dist/MultiLinearVariantRenderer/index.js +2 -2
  26. package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
  27. package/dist/MultiLinearVariantRenderer/makeImageData.js +63 -23
  28. package/dist/MultiLinearVariantRenderer/types.d.ts +1 -0
  29. package/dist/SplitVcfTabixAdapter/configSchema.js +4 -2
  30. package/dist/VariantFeatureWidget/AltFormatter.d.ts +4 -0
  31. package/dist/VariantFeatureWidget/AltFormatter.js +13 -0
  32. package/dist/VariantFeatureWidget/Checkbox2.js +1 -8
  33. package/dist/VariantFeatureWidget/Formatter.d.ts +3 -0
  34. package/dist/VariantFeatureWidget/Formatter.js +23 -0
  35. package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +3 -5
  36. package/dist/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
  37. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
  38. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +80 -0
  39. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
  40. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +41 -20
  41. package/dist/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
  42. package/dist/VariantFeatureWidget/VariantSampleGrid/types.js +2 -0
  43. package/dist/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
  44. package/dist/VariantFeatureWidget/VariantSampleGrid/util.js +14 -0
  45. package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +14 -0
  46. package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.js +30 -0
  47. package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -13
  48. package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.js +5 -57
  49. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -10
  50. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +15 -10
  51. package/dist/VariantRPC/getGenotypeMatrix.d.ts +6 -0
  52. package/dist/VariantRPC/getGenotypeMatrix.js +60 -0
  53. package/dist/VariantRPC/types.d.ts +36 -0
  54. package/dist/VariantRPC/types.js +2 -0
  55. package/dist/VcfAdapter/VcfAdapter.js +6 -3
  56. package/dist/VcfFeature/index.js +0 -1
  57. package/dist/VcfFeature/util.d.ts +2 -0
  58. package/dist/VcfFeature/util.js +125 -27
  59. package/dist/VcfTabixAdapter/VcfTabixAdapter.js +17 -7
  60. package/dist/getMultiVariantFeaturesAutorun.d.ts +2 -0
  61. package/dist/getMultiVariantFeaturesAutorun.js +9 -2
  62. package/dist/getMultiVariantSourcesAutorun.js +3 -2
  63. package/dist/index.js +2 -0
  64. package/dist/shared/MultiVariantBaseModel.d.ts +59 -3
  65. package/dist/shared/MultiVariantBaseModel.js +95 -37
  66. package/dist/shared/components/AddFiltersDialog.d.ts +9 -0
  67. package/dist/shared/components/AddFiltersDialog.js +61 -0
  68. package/dist/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
  69. package/dist/shared/components/MultiVariantBaseDisplayComponent.js +29 -0
  70. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialog.d.ts +6 -0
  71. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialog.js +29 -0
  72. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.d.ts +7 -0
  73. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.js +74 -0
  74. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogManual.d.ts +7 -0
  75. package/dist/shared/components/MultiVariantClusterDialog/ClusterDialogManual.js +145 -0
  76. package/dist/shared/components/MultiVariantClusterDialog/types.d.ts +10 -0
  77. package/dist/shared/components/MultiVariantClusterDialog/types.js +2 -0
  78. package/{esm/shared/components/ColorLegend.d.ts → dist/shared/components/MultiVariantColorLegend.d.ts} +2 -2
  79. package/dist/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +5 -3
  80. package/dist/shared/components/MultiVariantCrosshairs.d.ts +7 -0
  81. package/dist/shared/components/MultiVariantCrosshairs.js +40 -0
  82. package/dist/shared/components/MultiVariantLegendBar.d.ts +7 -0
  83. package/dist/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +2 -2
  84. package/dist/shared/components/MultiVariantTooltip.d.ts +4 -0
  85. package/dist/shared/components/MultiVariantTooltip.js +3 -2
  86. package/dist/shared/components/RectBg.js +4 -2
  87. package/dist/shared/components/SetColorDialog.js +1 -1
  88. package/dist/shared/components/SourcesDataGrid.d.ts +2 -1
  89. package/dist/shared/components/SourcesDataGrid.js +2 -2
  90. package/dist/shared/components/SourcesGrid.js +1 -1
  91. package/dist/shared/components/SourcesGridHeader.d.ts +2 -1
  92. package/dist/shared/components/SourcesGridHeader.js +2 -2
  93. package/dist/shared/drawAlleleCount.d.ts +1 -1
  94. package/dist/shared/drawAlleleCount.js +29 -5
  95. package/dist/shared/drawPhased.d.ts +1 -1
  96. package/dist/shared/drawPhased.js +14 -10
  97. package/dist/shared/getSources.d.ts +15 -0
  98. package/dist/shared/getSources.js +34 -0
  99. package/dist/shared/minorAlleleFrequencyUtils.d.ts +6 -1
  100. package/dist/shared/minorAlleleFrequencyUtils.js +4 -5
  101. package/dist/shared/sourcesGridUtils.d.ts +3 -2
  102. package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +2 -2
  103. package/esm/MultiLinearVariantDisplay/index.js +1 -1
  104. package/esm/MultiLinearVariantDisplay/model.d.ts +58 -3
  105. package/esm/MultiLinearVariantDisplay/model.js +0 -1
  106. package/esm/MultiLinearVariantDisplay/renderSvg.js +1 -1
  107. package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -8
  108. package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +2 -2
  109. package/esm/MultiLinearVariantMatrixDisplay/index.js +1 -1
  110. package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +59 -2
  111. package/esm/MultiLinearVariantMatrixDisplay/model.js +5 -1
  112. package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +1 -1
  113. package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
  114. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
  115. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +39 -0
  116. package/esm/MultiLinearVariantMatrixRenderer/index.js +4 -4
  117. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
  118. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +16 -9
  119. package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
  120. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
  121. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
  122. package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
  123. package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.js → MultiLinearVariantRendering.js} +25 -7
  124. package/esm/MultiLinearVariantRenderer/components/util.d.ts +1 -0
  125. package/esm/MultiLinearVariantRenderer/components/util.js +12 -0
  126. package/esm/MultiLinearVariantRenderer/index.js +1 -1
  127. package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
  128. package/esm/MultiLinearVariantRenderer/makeImageData.js +64 -24
  129. package/esm/MultiLinearVariantRenderer/types.d.ts +1 -0
  130. package/esm/SplitVcfTabixAdapter/configSchema.js +4 -2
  131. package/esm/VariantFeatureWidget/AltFormatter.d.ts +4 -0
  132. package/esm/VariantFeatureWidget/AltFormatter.js +10 -0
  133. package/esm/VariantFeatureWidget/Checkbox2.js +2 -9
  134. package/esm/VariantFeatureWidget/Formatter.d.ts +3 -0
  135. package/esm/VariantFeatureWidget/Formatter.js +17 -0
  136. package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +4 -6
  137. package/esm/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
  138. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
  139. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +74 -0
  140. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
  141. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +43 -22
  142. package/esm/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
  143. package/esm/VariantFeatureWidget/VariantSampleGrid/types.js +1 -0
  144. package/esm/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
  145. package/esm/VariantFeatureWidget/VariantSampleGrid/util.js +11 -0
  146. package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +14 -0
  147. package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.js +23 -0
  148. package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -13
  149. package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +5 -57
  150. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -10
  151. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +15 -10
  152. package/esm/VariantRPC/getGenotypeMatrix.d.ts +6 -0
  153. package/esm/VariantRPC/getGenotypeMatrix.js +57 -0
  154. package/esm/VariantRPC/types.d.ts +36 -0
  155. package/esm/VariantRPC/types.js +1 -0
  156. package/esm/VcfAdapter/VcfAdapter.js +7 -4
  157. package/esm/VcfFeature/index.js +0 -1
  158. package/esm/VcfFeature/util.d.ts +2 -0
  159. package/esm/VcfFeature/util.js +123 -27
  160. package/esm/VcfTabixAdapter/VcfTabixAdapter.js +18 -8
  161. package/esm/getMultiVariantFeaturesAutorun.d.ts +2 -0
  162. package/esm/getMultiVariantFeaturesAutorun.js +9 -2
  163. package/esm/getMultiVariantSourcesAutorun.js +3 -2
  164. package/esm/index.js +2 -0
  165. package/esm/shared/MultiVariantBaseModel.d.ts +59 -3
  166. package/esm/shared/MultiVariantBaseModel.js +97 -39
  167. package/esm/shared/components/AddFiltersDialog.d.ts +9 -0
  168. package/esm/shared/components/AddFiltersDialog.js +59 -0
  169. package/esm/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
  170. package/esm/shared/components/MultiVariantBaseDisplayComponent.js +24 -0
  171. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialog.d.ts +6 -0
  172. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialog.js +24 -0
  173. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.d.ts +7 -0
  174. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogAuto.js +72 -0
  175. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogManual.d.ts +7 -0
  176. package/esm/shared/components/MultiVariantClusterDialog/ClusterDialogManual.js +140 -0
  177. package/esm/shared/components/MultiVariantClusterDialog/types.d.ts +10 -0
  178. package/esm/shared/components/MultiVariantClusterDialog/types.js +1 -0
  179. package/{dist/shared/components/ColorLegend.d.ts → esm/shared/components/MultiVariantColorLegend.d.ts} +2 -2
  180. package/esm/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +6 -4
  181. package/esm/shared/components/MultiVariantCrosshairs.d.ts +7 -0
  182. package/esm/shared/components/MultiVariantCrosshairs.js +35 -0
  183. package/esm/shared/components/MultiVariantLegendBar.d.ts +7 -0
  184. package/esm/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +1 -1
  185. package/esm/shared/components/MultiVariantTooltip.d.ts +4 -0
  186. package/esm/shared/components/MultiVariantTooltip.js +3 -2
  187. package/esm/shared/components/RectBg.js +4 -2
  188. package/esm/shared/components/SetColorDialog.js +1 -1
  189. package/esm/shared/components/SourcesDataGrid.d.ts +2 -1
  190. package/esm/shared/components/SourcesDataGrid.js +2 -2
  191. package/esm/shared/components/SourcesGrid.js +1 -1
  192. package/esm/shared/components/SourcesGridHeader.d.ts +2 -1
  193. package/esm/shared/components/SourcesGridHeader.js +2 -2
  194. package/esm/shared/drawAlleleCount.d.ts +1 -1
  195. package/esm/shared/drawAlleleCount.js +29 -5
  196. package/esm/shared/drawPhased.d.ts +1 -1
  197. package/esm/shared/drawPhased.js +14 -10
  198. package/esm/shared/getSources.d.ts +15 -0
  199. package/esm/shared/getSources.js +31 -0
  200. package/esm/shared/minorAlleleFrequencyUtils.d.ts +6 -1
  201. package/esm/shared/minorAlleleFrequencyUtils.js +5 -6
  202. package/esm/shared/sourcesGridUtils.d.ts +3 -2
  203. package/package.json +10 -9
  204. package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
  205. package/dist/MultiLinearVariantDisplay/components/Crosshair.js +0 -35
  206. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
  207. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -28
  208. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
  209. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -38
  210. package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
  211. package/dist/MultiLinearVariantRenderer/components/MultiVariantRendering.js +0 -52
  212. package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
  213. package/dist/VariantFeatureWidget/VariantConsequencePanel.js +0 -15
  214. package/dist/shared/components/ClusterDialog.d.ts +0 -11
  215. package/dist/shared/components/ClusterDialog.js +0 -113
  216. package/dist/shared/components/LegendBar.d.ts +0 -18
  217. package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
  218. package/esm/MultiLinearVariantDisplay/components/Crosshair.js +0 -30
  219. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
  220. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -23
  221. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
  222. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -36
  223. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
  224. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +0 -47
  225. package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
  226. package/esm/VariantFeatureWidget/VariantConsequencePanel.js +0 -9
  227. package/esm/shared/components/ClusterDialog.d.ts +0 -11
  228. package/esm/shared/components/ClusterDialog.js +0 -107
  229. package/esm/shared/components/LegendBar.d.ts +0 -18
  230. /package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
  231. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
  232. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
  233. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
  234. /package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
  235. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
  236. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
  237. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
@@ -1,17 +1,9 @@
1
1
  import RpcMethodTypeWithFiltersAndRenameRegions from '@jbrowse/core/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions';
2
+ import type { GetSimplifiedFeaturesArgs } from './types';
2
3
  import type { SampleInfo } from '../shared/types';
3
- import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
- import type { Region } from '@jbrowse/core/util';
5
4
  export declare class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersAndRenameRegions {
6
5
  name: string;
7
- execute(args: {
8
- adapterConfig: AnyConfigurationModel;
9
- stopToken?: string;
10
- sessionId: string;
11
- headers?: Record<string, string>;
12
- regions: Region[];
13
- bpPerPx: number;
14
- }, rpcDriverClassName: string): Promise<{
6
+ execute(args: GetSimplifiedFeaturesArgs, rpcDriverClassName: string): Promise<{
15
7
  hasPhased: boolean;
16
8
  sampleInfo: Record<string, SampleInfo>;
17
9
  features: {
@@ -20,6 +12,7 @@ export declare class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWith
20
12
  start: number;
21
13
  end: number;
22
14
  refName: string;
15
+ name: any;
23
16
  };
24
17
  }[];
25
18
  }>;
@@ -1,5 +1,6 @@
1
1
  import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
2
2
  import RpcMethodTypeWithFiltersAndRenameRegions from '@jbrowse/core/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions';
3
+ import { forEachWithStopTokenCheck } from '@jbrowse/core/util';
3
4
  import { firstValueFrom, toArray } from 'rxjs';
4
5
  import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
5
6
  export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersAndRenameRegions {
@@ -8,18 +9,21 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
8
9
  this.name = 'MultiVariantGetSimplifiedFeatures';
9
10
  }
10
11
  async execute(args, rpcDriverClassName) {
11
- var _a, _b;
12
- const pm = this.pluginManager;
13
12
  const deserializedArgs = await this.deserializeArguments(args, rpcDriverClassName);
14
- const { minorAlleleFrequencyFilter, regions, adapterConfig, sessionId } = deserializedArgs;
15
- const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig);
16
- const feats = await firstValueFrom(dataAdapter
17
- .getFeaturesInMultipleRegions(regions, deserializedArgs)
18
- .pipe(toArray()));
19
- const features = getFeaturesThatPassMinorAlleleFrequencyFilter(feats, minorAlleleFrequencyFilter);
13
+ const { lengthCutoffFilter, minorAlleleFrequencyFilter, regions, adapterConfig, stopToken, sessionId, } = deserializedArgs;
14
+ const { dataAdapter } = await getAdapter(this.pluginManager, sessionId, adapterConfig);
15
+ const features = getFeaturesThatPassMinorAlleleFrequencyFilter({
16
+ minorAlleleFrequencyFilter,
17
+ lengthCutoffFilter,
18
+ stopToken,
19
+ features: await firstValueFrom(dataAdapter
20
+ .getFeaturesInMultipleRegions(regions, deserializedArgs)
21
+ .pipe(toArray())),
22
+ });
20
23
  const sampleInfo = {};
21
24
  let hasPhased = false;
22
- for (const { feature } of features) {
25
+ forEachWithStopTokenCheck(features, stopToken, ({ feature }) => {
26
+ var _a, _b;
23
27
  const samp = feature.get('genotypes');
24
28
  for (const [key, val] of Object.entries(samp)) {
25
29
  const isPhased = val.includes('|');
@@ -29,7 +33,7 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
29
33
  isPhased: ((_b = sampleInfo[key]) === null || _b === void 0 ? void 0 : _b.isPhased) || isPhased,
30
34
  };
31
35
  }
32
- }
36
+ });
33
37
  return {
34
38
  hasPhased,
35
39
  sampleInfo,
@@ -39,6 +43,7 @@ export class MultiVariantGetSimplifiedFeatures extends RpcMethodTypeWithFiltersA
39
43
  start: feature.get('start'),
40
44
  end: feature.get('end'),
41
45
  refName: feature.get('refName'),
46
+ name: feature.get('name'),
42
47
  },
43
48
  })),
44
49
  };
@@ -0,0 +1,6 @@
1
+ import type { GetGenotypeMatrixArgs } from './types';
2
+ import type PluginManager from '@jbrowse/core/PluginManager';
3
+ export declare function getGenotypeMatrix({ pluginManager, args, }: {
4
+ pluginManager: PluginManager;
5
+ args: GetGenotypeMatrixArgs;
6
+ }): Promise<Record<string, number[]>>;
@@ -0,0 +1,57 @@
1
+ import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
2
+ import { forEachWithStopTokenCheck } from '@jbrowse/core/util';
3
+ import { firstValueFrom, toArray } from 'rxjs';
4
+ import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
5
+ export async function getGenotypeMatrix({ pluginManager, args, }) {
6
+ const { sources, minorAlleleFrequencyFilter, regions, adapterConfig, sessionId, lengthCutoffFilter, stopToken, } = args;
7
+ const adapter = await getAdapter(pluginManager, sessionId, adapterConfig);
8
+ const dataAdapter = adapter.dataAdapter;
9
+ const genotypeFactor = new Set();
10
+ const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter({
11
+ minorAlleleFrequencyFilter,
12
+ lengthCutoffFilter,
13
+ stopToken,
14
+ features: await firstValueFrom(dataAdapter.getFeaturesInMultipleRegions(regions, args).pipe(toArray())),
15
+ });
16
+ for (const { alleleCounts } of mafs) {
17
+ for (const alt of alleleCounts.keys()) {
18
+ genotypeFactor.add(alt);
19
+ }
20
+ }
21
+ const rows = {};
22
+ forEachWithStopTokenCheck(mafs, stopToken, ({ feature }) => {
23
+ const genotypes = feature.get('genotypes');
24
+ for (const { name } of sources) {
25
+ if (!rows[name]) {
26
+ rows[name] = [];
27
+ }
28
+ const val = genotypes[name];
29
+ const alleles = val.split(/[/|]/);
30
+ let genotypeStatus = 0;
31
+ let nonRefCount = 0;
32
+ let uncalledCount = 0;
33
+ for (const l of alleles) {
34
+ if (l === '.') {
35
+ uncalledCount++;
36
+ }
37
+ else if (l !== '0') {
38
+ nonRefCount++;
39
+ }
40
+ }
41
+ if (uncalledCount === alleles.length) {
42
+ genotypeStatus = -1;
43
+ }
44
+ else if (nonRefCount === 0) {
45
+ genotypeStatus = 0;
46
+ }
47
+ else if (nonRefCount === alleles.length) {
48
+ genotypeStatus = 2;
49
+ }
50
+ else {
51
+ genotypeStatus = 1;
52
+ }
53
+ rows[name].push(genotypeStatus);
54
+ }
55
+ });
56
+ return rows;
57
+ }
@@ -0,0 +1,36 @@
1
+ import type { Source } from '../shared/types';
2
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
+ import type { Region } from '@jbrowse/core/util';
4
+ export interface GetGenotypeMatrixArgs {
5
+ sources: Source[];
6
+ minorAlleleFrequencyFilter: number;
7
+ adapterConfig: AnyConfigurationModel;
8
+ stopToken?: string;
9
+ sessionId: string;
10
+ headers?: Record<string, string>;
11
+ regions: Region[];
12
+ bpPerPx: number;
13
+ lengthCutoffFilter: number;
14
+ }
15
+ export interface GetSimplifiedFeaturesArgs {
16
+ adapterConfig: AnyConfigurationModel;
17
+ stopToken?: string;
18
+ sessionId: string;
19
+ headers?: Record<string, string>;
20
+ regions: Region[];
21
+ bpPerPx: number;
22
+ minorAlleleFrequencyFilter: number;
23
+ lengthCutoffFilter: number;
24
+ }
25
+ export interface ClusterGenotypeMatrixArgs {
26
+ adapterConfig: AnyConfigurationModel;
27
+ stopToken?: string;
28
+ statusCallback: (arg: string) => void;
29
+ sessionId: string;
30
+ headers?: Record<string, string>;
31
+ regions: Region[];
32
+ bpPerPx: number;
33
+ sources: Source[];
34
+ minorAlleleFrequencyFilter: number;
35
+ lengthCutoffFilter: number;
36
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  import IntervalTree from '@flatten-js/interval-tree';
2
2
  import VcfParser from '@gmod/vcf';
3
3
  import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
4
- import { fetchAndMaybeUnzip } from '@jbrowse/core/util';
4
+ import { fetchAndMaybeUnzip, getProgressDisplayStr } from '@jbrowse/core/util';
5
5
  import { openLocation } from '@jbrowse/core/util/io';
6
6
  import { ObservableCreate } from '@jbrowse/core/util/rxjs';
7
7
  import VcfFeature from '../VcfFeature';
@@ -45,7 +45,7 @@ class VcfAdapter extends BaseFeatureDataAdapter {
45
45
  }
46
46
  }
47
47
  if (i++ % 10000 === 0) {
48
- statusCallback(`Loading ${Math.floor(blockStart / 1000000).toLocaleString('en-US')}/${Math.floor(buffer.length / 1000000).toLocaleString('en-US')} MB`);
48
+ statusCallback(`Loading ${getProgressDisplayStr(blockStart, buffer.length)}`);
49
49
  }
50
50
  blockStart = n + 1;
51
51
  }
@@ -96,9 +96,12 @@ class VcfAdapter extends BaseFeatureDataAdapter {
96
96
  try {
97
97
  const { start, end, refName } = region;
98
98
  const { intervalTreeMap } = await this.setup();
99
- (_a = intervalTreeMap[refName]) === null || _a === void 0 ? void 0 : _a.call(intervalTreeMap, opts.statusCallback).search([start, end]).forEach(f => {
99
+ for (const f of ((_a = intervalTreeMap[refName]) === null || _a === void 0 ? void 0 : _a.call(intervalTreeMap, opts.statusCallback).search([
100
+ start,
101
+ end,
102
+ ])) || []) {
100
103
  observer.next(f);
101
- });
104
+ }
102
105
  observer.complete();
103
106
  }
104
107
  catch (e) {
@@ -10,7 +10,6 @@ function dataFromVariant(variant, parser) {
10
10
  description,
11
11
  type,
12
12
  name: ID === null || ID === void 0 ? void 0 : ID.join(','),
13
- aliases: ID && ID.length > 1 ? ID.slice(1) : undefined,
14
13
  };
15
14
  }
16
15
  function getEnd(variant) {
@@ -2,3 +2,5 @@ import type VCF from '@gmod/vcf';
2
2
  export declare function getSOTermAndDescription(ref: string, alt: string[] | undefined, parser: VCF): string[];
3
3
  export declare function getSOAndDescFromAltDefs(alt: string, parser: VCF): string[];
4
4
  export declare function getSOAndDescByExamination(ref: string, alt: string): string[];
5
+ export declare function getMinimalDesc(ref: string, alt: string): string;
6
+ export declare function makeSimpleAltString(genotype: string, ref: string, alt: string[]): string;
@@ -1,4 +1,5 @@
1
1
  import { parseBreakend } from '@gmod/vcf';
2
+ import { getBpDisplayStr } from '@jbrowse/core/util';
2
3
  const altTypeToSO = {
3
4
  DEL: 'deletion',
4
5
  INS: 'insertion',
@@ -17,7 +18,7 @@ export function getSOTermAndDescription(ref, alt, parser) {
17
18
  }
18
19
  const soTerms = new Set();
19
20
  let descriptions = new Set();
20
- alt.forEach(a => {
21
+ for (const a of alt) {
21
22
  let [soTerm, description] = getSOAndDescFromAltDefs(a, parser);
22
23
  if (!soTerm) {
23
24
  ;
@@ -27,7 +28,7 @@ export function getSOTermAndDescription(ref, alt, parser) {
27
28
  soTerms.add(soTerm);
28
29
  descriptions.add(description);
29
30
  }
30
- });
31
+ }
31
32
  if (descriptions.size > 1) {
32
33
  const descs = [...descriptions];
33
34
  const prefixes = new Set(descs
@@ -62,63 +63,158 @@ export function getSOAndDescFromAltDefs(alt, parser) {
62
63
  return [soTerm, alt];
63
64
  }
64
65
  const modAlt = alt.split(':');
65
- if (modAlt.length > 1) {
66
- return getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser);
67
- }
68
- return [];
66
+ return modAlt.length > 1
67
+ ? getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser)
68
+ : [];
69
69
  }
70
70
  export function getSOAndDescByExamination(ref, alt) {
71
71
  const bnd = parseBreakend(alt);
72
72
  if (bnd) {
73
73
  return ['breakend', alt];
74
74
  }
75
- if (ref.length === 1 && alt.length === 1) {
75
+ else if (ref.length === 1 && alt.length === 1) {
76
76
  return ['SNV', makeDescriptionString('SNV', ref, alt)];
77
77
  }
78
- if (alt === '<INS>') {
78
+ else if (alt === '<INS>') {
79
79
  return ['insertion', alt];
80
80
  }
81
- if (alt === '<DEL>') {
81
+ else if (alt === '<DEL>') {
82
82
  return ['deletion', alt];
83
83
  }
84
- if (alt === '<DUP>') {
84
+ else if (alt === '<DUP>') {
85
85
  return ['duplication', alt];
86
86
  }
87
- if (alt === '<CNV>') {
87
+ else if (alt === '<CNV>') {
88
88
  return ['cnv', alt];
89
89
  }
90
- if (alt === '<INV>') {
90
+ else if (alt === '<INV>') {
91
91
  return ['inversion', alt];
92
92
  }
93
- if (alt === '<TRA>') {
93
+ else if (alt === '<TRA>') {
94
94
  return ['translocation', alt];
95
95
  }
96
- if (alt.includes('<')) {
96
+ else if (alt.includes('<')) {
97
97
  return ['sv', alt];
98
98
  }
99
- if (ref.length === alt.length) {
100
- return ref.split('').reverse().join('') === alt
101
- ? ['inversion', makeDescriptionString('inversion', ref, alt)]
102
- : ['substitution', makeDescriptionString('substitution', ref, alt)];
99
+ else if (ref.length === alt.length) {
100
+ const lenRef = ref.length;
101
+ const lenAlt = alt.length;
102
+ if (lenRef > 5 || lenAlt > 5) {
103
+ const lena = getBpDisplayStr(lenRef);
104
+ const lenb = getBpDisplayStr(lenAlt);
105
+ return ref.split('').reverse().join('') === alt
106
+ ? ['inverson', makeDescriptionString('inv', lena, lenb)]
107
+ : ['substitution', makeDescriptionString('substitution', lena, lenb)];
108
+ }
109
+ else {
110
+ return ref.split('').reverse().join('') === alt
111
+ ? ['inversion', makeDescriptionString('inv', ref, alt)]
112
+ : ['substitution', makeDescriptionString('substitution', ref, alt)];
113
+ }
103
114
  }
104
- if (ref.length <= alt.length) {
115
+ else if (ref.length <= alt.length) {
105
116
  const len = alt.length - ref.length;
106
- const lena = len.toLocaleString('en-US');
117
+ const lenAlt = alt.length;
118
+ const lenRef = ref.length;
119
+ const lena = getBpDisplayStr(len);
107
120
  return [
108
121
  'insertion',
109
- len > 5 ? `${lena}bp INS` : makeDescriptionString('insertion', ref, alt),
122
+ lenRef > 5 || lenAlt > 5
123
+ ? `${lena} INS`
124
+ : makeDescriptionString('insertion', len > 5 ? lena : ref, alt),
110
125
  ];
111
126
  }
112
- if (ref.length > alt.length) {
113
- const len = ref.length - alt.length;
114
- const lena = len.toLocaleString('en-US');
127
+ else if (ref.length > alt.length) {
128
+ const lenRef = ref.length;
129
+ const lenAlt = alt.length;
130
+ const lena = getBpDisplayStr(lenRef - lenAlt);
115
131
  return [
116
132
  'deletion',
117
- len > 5 ? `${lena}bp DEL` : makeDescriptionString('deletion', ref, alt),
133
+ lenRef > 5 || lenAlt > 5
134
+ ? `${lena} DEL`
135
+ : makeDescriptionString('deletion', ref, alt),
118
136
  ];
119
137
  }
120
- return ['indel', makeDescriptionString('indel', ref, alt)];
138
+ else {
139
+ return ['indel', makeDescriptionString('indel', ref, alt)];
140
+ }
141
+ }
142
+ export function getMinimalDesc(ref, alt) {
143
+ const bnd = parseBreakend(alt);
144
+ if (bnd) {
145
+ return alt;
146
+ }
147
+ else if (ref.length === 1 && alt.length === 1) {
148
+ return alt;
149
+ }
150
+ else if (alt === '<INS>') {
151
+ return alt;
152
+ }
153
+ else if (alt === '<DEL>') {
154
+ return alt;
155
+ }
156
+ else if (alt === '<DUP>') {
157
+ return alt;
158
+ }
159
+ else if (alt === '<CNV>') {
160
+ return alt;
161
+ }
162
+ else if (alt === '<INV>') {
163
+ return alt;
164
+ }
165
+ else if (alt === '<TRA>') {
166
+ return alt;
167
+ }
168
+ else if (alt.includes('<')) {
169
+ return alt;
170
+ }
171
+ else if (ref.length === alt.length) {
172
+ const lenRef = ref.length;
173
+ const lenAlt = alt.length;
174
+ if (lenRef > 5 || lenAlt > 5) {
175
+ const lena = getBpDisplayStr(lenRef);
176
+ const lenb = getBpDisplayStr(lenAlt);
177
+ return ref.split('').reverse().join('') === alt
178
+ ? makeDescriptionString('inv', lena, lenb)
179
+ : makeDescriptionString('substitution', lena, lenb);
180
+ }
181
+ else {
182
+ return ref.split('').reverse().join('') === alt
183
+ ? makeDescriptionString('inv', ref, alt)
184
+ : makeDescriptionString('substitution', ref, alt);
185
+ }
186
+ }
187
+ else if (ref.length <= alt.length) {
188
+ const len = alt.length - ref.length;
189
+ const lenAlt = alt.length;
190
+ const lenRef = ref.length;
191
+ const lena = getBpDisplayStr(len);
192
+ return lenRef > 5 || lenAlt > 5
193
+ ? `${lena} INS`
194
+ : makeDescriptionString('insertion', len > 5 ? lena : ref, alt);
195
+ }
196
+ else if (ref.length > alt.length) {
197
+ const lenRef = ref.length;
198
+ const lenAlt = alt.length;
199
+ const lena = getBpDisplayStr(lenRef - lenAlt);
200
+ return lenRef > 5 || lenAlt > 5
201
+ ? `${lena} DEL`
202
+ : makeDescriptionString('deletion', ref, alt);
203
+ }
204
+ else {
205
+ return makeDescriptionString('indel', ref, alt);
206
+ }
121
207
  }
122
208
  function makeDescriptionString(soTerm, ref, alt) {
123
- return `${soTerm} ${ref} -> ${alt}`;
209
+ return `${soTerm} ${[ref, alt].join(' -> ')}`;
210
+ }
211
+ export function makeSimpleAltString(genotype, ref, alt) {
212
+ return genotype
213
+ .split(/[/|]/)
214
+ .map(r => r === '.'
215
+ ? '.'
216
+ : +r === 0
217
+ ? `ref(${ref.length < 10 ? ref : getBpDisplayStr(ref.length)})`
218
+ : getMinimalDesc(ref, alt[+r - 1] || ''))
219
+ .join(genotype.includes('|') ? '|' : '/');
124
220
  }
@@ -1,7 +1,7 @@
1
1
  import { TabixIndexedFile } from '@gmod/tabix';
2
2
  import VcfParser from '@gmod/vcf';
3
3
  import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
4
- import { fetchAndMaybeUnzipText, updateStatus } from '@jbrowse/core/util';
4
+ import { fetchAndMaybeUnzipText, shorten2, updateStatus, } from '@jbrowse/core/util';
5
5
  import { openLocation } from '@jbrowse/core/util/io';
6
6
  import { ObservableCreate } from '@jbrowse/core/util/rxjs';
7
7
  import VcfFeature from '../VcfFeature';
@@ -85,17 +85,27 @@ export default class VcfTabixAdapter extends BaseFeatureDataAdapter {
85
85
  const lines = txt.split(/\n|\r\n|\r/);
86
86
  const header = lines[0].split('\t');
87
87
  const { parser } = await this.configure();
88
- const s = new Set(parser.samples);
89
- return lines
88
+ const metadataLines = lines
90
89
  .slice(1)
90
+ .filter(f => !!f)
91
91
  .map(line => {
92
- const cols = line.split('\t');
92
+ const [name, ...rest] = line.split('\t');
93
93
  return {
94
- name: cols[0],
95
- ...Object.fromEntries(cols.slice(1).map((c, idx) => [header[idx + 1], c])),
94
+ ...Object.fromEntries(header.slice(1).map((c, idx) => [c, rest[idx] || ''])),
95
+ name: name,
96
96
  };
97
- })
98
- .filter(f => s.has(f.name));
97
+ });
98
+ const vcfSampleSet = new Set(parser.samples);
99
+ const metadataSet = new Set(metadataLines.map(r => r.name));
100
+ const metadataNotInVcfSamples = [...metadataSet].filter(f => !vcfSampleSet.has(f));
101
+ const vcfSamplesNotInMetadata = [...vcfSampleSet].filter(f => !metadataSet.has(f));
102
+ if (metadataNotInVcfSamples.length) {
103
+ console.warn(`There are ${metadataNotInVcfSamples.length} samples in metadata file (${metadataLines.length} lines) not in VCF (${parser.samples.length} samples):`, shorten2(metadataNotInVcfSamples.join(',')));
104
+ }
105
+ if (vcfSamplesNotInMetadata.length) {
106
+ console.warn(`There are ${vcfSamplesNotInMetadata.length} samples in VCF file (${parser.samples.length} samples) not in metadata file (${metadataLines.length} lines):`, shorten2(vcfSamplesNotInMetadata.map(m => m).join(',')));
107
+ }
108
+ return metadataLines.filter(f => vcfSampleSet.has(f.name));
99
109
  }
100
110
  }
101
111
  freeResources() { }
@@ -6,6 +6,7 @@ export declare function getMultiVariantFeaturesAutorun(self: {
6
6
  adapterConfig: AnyConfigurationModel;
7
7
  sources?: Source[];
8
8
  minorAlleleFrequencyFilter: number;
9
+ lengthCutoffFilter: number;
9
10
  statsReadyAndRegionNotTooLarge: boolean;
10
11
  adapterProps: () => Record<string, unknown>;
11
12
  setError: (error: unknown) => void;
@@ -13,4 +14,5 @@ export declare function getMultiVariantFeaturesAutorun(self: {
13
14
  setMessage: (str: string) => void;
14
15
  setHasPhased: (arg: boolean) => void;
15
16
  setSampleInfo: (arg: Record<string, SampleInfo>) => void;
17
+ setSimplifiedFeaturesLoading: (arg: string) => void;
16
18
  }): void;
@@ -1,5 +1,6 @@
1
1
  import { SimpleFeature, getContainingView, getSession, } from '@jbrowse/core/util';
2
2
  import { isAbortException } from '@jbrowse/core/util/aborting';
3
+ import { createStopToken } from '@jbrowse/core/util/stopToken';
3
4
  import { getRpcSessionId } from '@jbrowse/core/util/tracks';
4
5
  import { autorun } from 'mobx';
5
6
  import { addDisposer, isAlive } from 'mobx-state-tree';
@@ -10,16 +11,20 @@ export function getMultiVariantFeaturesAutorun(self) {
10
11
  if (!view.initialized || !self.statsReadyAndRegionNotTooLarge) {
11
12
  return;
12
13
  }
14
+ const stopToken = createStopToken();
15
+ self.setSimplifiedFeaturesLoading(stopToken);
13
16
  const { rpcManager } = getSession(self);
14
- const { sources, minorAlleleFrequencyFilter, adapterConfig } = self;
17
+ const { lengthCutoffFilter, sources, minorAlleleFrequencyFilter, adapterConfig, } = self;
15
18
  if (sources) {
16
19
  const sessionId = getRpcSessionId(self);
17
20
  const { sampleInfo, hasPhased, features } = (await rpcManager.call(sessionId, 'MultiVariantGetSimplifiedFeatures', {
18
21
  regions: view.dynamicBlocks.contentBlocks,
19
22
  sources,
20
23
  minorAlleleFrequencyFilter,
24
+ lengthCutoffFilter,
21
25
  sessionId,
22
26
  adapterConfig,
27
+ stopToken,
23
28
  }));
24
29
  if (isAlive(self)) {
25
30
  self.setHasPhased(hasPhased);
@@ -34,5 +39,7 @@ export function getMultiVariantFeaturesAutorun(self) {
34
39
  getSession(self).notifyError(`${e}`, e);
35
40
  }
36
41
  }
37
- }, { delay: 1000 }));
42
+ }, {
43
+ delay: 1000,
44
+ }));
38
45
  }
@@ -13,12 +13,13 @@ export function getMultiVariantSourcesAutorun(self) {
13
13
  }
14
14
  const { rpcManager } = getSession(self);
15
15
  const { adapterConfig } = self;
16
- const token = createStopToken();
17
- self.setSourcesLoading(token);
16
+ const stopToken = createStopToken();
17
+ self.setSourcesLoading(stopToken);
18
18
  const sessionId = getRpcSessionId(self);
19
19
  const sources = (await rpcManager.call(sessionId, 'MultiVariantGetSources', {
20
20
  sessionId,
21
21
  adapterConfig,
22
+ stopToken,
22
23
  }));
23
24
  if (isAlive(self)) {
24
25
  self.setSources(sources);
package/esm/index.js CHANGED
@@ -8,6 +8,7 @@ import MultiVariantRendererF from './MultiLinearVariantRenderer';
8
8
  import SplitVcfTabixAdapterF from './SplitVcfTabixAdapter';
9
9
  import StructuralVariantChordRendererF from './StructuralVariantChordRenderer';
10
10
  import VariantFeatureWidgetF from './VariantFeatureWidget';
11
+ import { MultiVariantClusterGenotypeMatrix } from './VariantRPC/MultiVariantClusterGenotypeMatrix';
11
12
  import { MultiVariantGetGenotypeMatrix } from './VariantRPC/MultiVariantGetGenotypeMatrix';
12
13
  import { MultiVariantGetSimplifiedFeatures } from './VariantRPC/MultiVariantGetSimplifiedFeatures';
13
14
  import { MultiVariantGetSources } from './VariantRPC/MultiVariantGetSources';
@@ -36,6 +37,7 @@ export default class VariantsPlugin extends Plugin {
36
37
  ChordVariantDisplayF(pluginManager);
37
38
  pluginManager.addRpcMethod(() => new MultiVariantGetSources(pluginManager));
38
39
  pluginManager.addRpcMethod(() => new MultiVariantGetGenotypeMatrix(pluginManager));
40
+ pluginManager.addRpcMethod(() => new MultiVariantClusterGenotypeMatrix(pluginManager));
39
41
  pluginManager.addRpcMethod(() => new MultiVariantGetSimplifiedFeatures(pluginManager));
40
42
  }
41
43
  }