@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
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSOTermAndDescription = getSOTermAndDescription;
4
4
  exports.getSOAndDescFromAltDefs = getSOAndDescFromAltDefs;
5
5
  exports.getSOAndDescByExamination = getSOAndDescByExamination;
6
+ exports.getMinimalDesc = getMinimalDesc;
7
+ exports.makeSimpleAltString = makeSimpleAltString;
6
8
  const vcf_1 = require("@gmod/vcf");
9
+ const util_1 = require("@jbrowse/core/util");
7
10
  const altTypeToSO = {
8
11
  DEL: 'deletion',
9
12
  INS: 'insertion',
@@ -22,7 +25,7 @@ function getSOTermAndDescription(ref, alt, parser) {
22
25
  }
23
26
  const soTerms = new Set();
24
27
  let descriptions = new Set();
25
- alt.forEach(a => {
28
+ for (const a of alt) {
26
29
  let [soTerm, description] = getSOAndDescFromAltDefs(a, parser);
27
30
  if (!soTerm) {
28
31
  ;
@@ -32,7 +35,7 @@ function getSOTermAndDescription(ref, alt, parser) {
32
35
  soTerms.add(soTerm);
33
36
  descriptions.add(description);
34
37
  }
35
- });
38
+ }
36
39
  if (descriptions.size > 1) {
37
40
  const descs = [...descriptions];
38
41
  const prefixes = new Set(descs
@@ -67,63 +70,158 @@ function getSOAndDescFromAltDefs(alt, parser) {
67
70
  return [soTerm, alt];
68
71
  }
69
72
  const modAlt = alt.split(':');
70
- if (modAlt.length > 1) {
71
- return getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser);
72
- }
73
- return [];
73
+ return modAlt.length > 1
74
+ ? getSOAndDescFromAltDefs(`<${modAlt.slice(0, -1).join(':')}>`, parser)
75
+ : [];
74
76
  }
75
77
  function getSOAndDescByExamination(ref, alt) {
76
78
  const bnd = (0, vcf_1.parseBreakend)(alt);
77
79
  if (bnd) {
78
80
  return ['breakend', alt];
79
81
  }
80
- if (ref.length === 1 && alt.length === 1) {
82
+ else if (ref.length === 1 && alt.length === 1) {
81
83
  return ['SNV', makeDescriptionString('SNV', ref, alt)];
82
84
  }
83
- if (alt === '<INS>') {
85
+ else if (alt === '<INS>') {
84
86
  return ['insertion', alt];
85
87
  }
86
- if (alt === '<DEL>') {
88
+ else if (alt === '<DEL>') {
87
89
  return ['deletion', alt];
88
90
  }
89
- if (alt === '<DUP>') {
91
+ else if (alt === '<DUP>') {
90
92
  return ['duplication', alt];
91
93
  }
92
- if (alt === '<CNV>') {
94
+ else if (alt === '<CNV>') {
93
95
  return ['cnv', alt];
94
96
  }
95
- if (alt === '<INV>') {
97
+ else if (alt === '<INV>') {
96
98
  return ['inversion', alt];
97
99
  }
98
- if (alt === '<TRA>') {
100
+ else if (alt === '<TRA>') {
99
101
  return ['translocation', alt];
100
102
  }
101
- if (alt.includes('<')) {
103
+ else if (alt.includes('<')) {
102
104
  return ['sv', alt];
103
105
  }
104
- if (ref.length === alt.length) {
105
- return ref.split('').reverse().join('') === alt
106
- ? ['inversion', makeDescriptionString('inversion', ref, alt)]
107
- : ['substitution', makeDescriptionString('substitution', ref, alt)];
106
+ else if (ref.length === alt.length) {
107
+ const lenRef = ref.length;
108
+ const lenAlt = alt.length;
109
+ if (lenRef > 5 || lenAlt > 5) {
110
+ const lena = (0, util_1.getBpDisplayStr)(lenRef);
111
+ const lenb = (0, util_1.getBpDisplayStr)(lenAlt);
112
+ return ref.split('').reverse().join('') === alt
113
+ ? ['inverson', makeDescriptionString('inv', lena, lenb)]
114
+ : ['substitution', makeDescriptionString('substitution', lena, lenb)];
115
+ }
116
+ else {
117
+ return ref.split('').reverse().join('') === alt
118
+ ? ['inversion', makeDescriptionString('inv', ref, alt)]
119
+ : ['substitution', makeDescriptionString('substitution', ref, alt)];
120
+ }
108
121
  }
109
- if (ref.length <= alt.length) {
122
+ else if (ref.length <= alt.length) {
110
123
  const len = alt.length - ref.length;
111
- const lena = len.toLocaleString('en-US');
124
+ const lenAlt = alt.length;
125
+ const lenRef = ref.length;
126
+ const lena = (0, util_1.getBpDisplayStr)(len);
112
127
  return [
113
128
  'insertion',
114
- len > 5 ? `${lena}bp INS` : makeDescriptionString('insertion', ref, alt),
129
+ lenRef > 5 || lenAlt > 5
130
+ ? `${lena} INS`
131
+ : makeDescriptionString('insertion', len > 5 ? lena : ref, alt),
115
132
  ];
116
133
  }
117
- if (ref.length > alt.length) {
118
- const len = ref.length - alt.length;
119
- const lena = len.toLocaleString('en-US');
134
+ else if (ref.length > alt.length) {
135
+ const lenRef = ref.length;
136
+ const lenAlt = alt.length;
137
+ const lena = (0, util_1.getBpDisplayStr)(lenRef - lenAlt);
120
138
  return [
121
139
  'deletion',
122
- len > 5 ? `${lena}bp DEL` : makeDescriptionString('deletion', ref, alt),
140
+ lenRef > 5 || lenAlt > 5
141
+ ? `${lena} DEL`
142
+ : makeDescriptionString('deletion', ref, alt),
123
143
  ];
124
144
  }
125
- return ['indel', makeDescriptionString('indel', ref, alt)];
145
+ else {
146
+ return ['indel', makeDescriptionString('indel', ref, alt)];
147
+ }
148
+ }
149
+ function getMinimalDesc(ref, alt) {
150
+ const bnd = (0, vcf_1.parseBreakend)(alt);
151
+ if (bnd) {
152
+ return alt;
153
+ }
154
+ else if (ref.length === 1 && alt.length === 1) {
155
+ return alt;
156
+ }
157
+ else if (alt === '<INS>') {
158
+ return alt;
159
+ }
160
+ else if (alt === '<DEL>') {
161
+ return alt;
162
+ }
163
+ else if (alt === '<DUP>') {
164
+ return alt;
165
+ }
166
+ else if (alt === '<CNV>') {
167
+ return alt;
168
+ }
169
+ else if (alt === '<INV>') {
170
+ return alt;
171
+ }
172
+ else if (alt === '<TRA>') {
173
+ return alt;
174
+ }
175
+ else if (alt.includes('<')) {
176
+ return alt;
177
+ }
178
+ else if (ref.length === alt.length) {
179
+ const lenRef = ref.length;
180
+ const lenAlt = alt.length;
181
+ if (lenRef > 5 || lenAlt > 5) {
182
+ const lena = (0, util_1.getBpDisplayStr)(lenRef);
183
+ const lenb = (0, util_1.getBpDisplayStr)(lenAlt);
184
+ return ref.split('').reverse().join('') === alt
185
+ ? makeDescriptionString('inv', lena, lenb)
186
+ : makeDescriptionString('substitution', lena, lenb);
187
+ }
188
+ else {
189
+ return ref.split('').reverse().join('') === alt
190
+ ? makeDescriptionString('inv', ref, alt)
191
+ : makeDescriptionString('substitution', ref, alt);
192
+ }
193
+ }
194
+ else if (ref.length <= alt.length) {
195
+ const len = alt.length - ref.length;
196
+ const lenAlt = alt.length;
197
+ const lenRef = ref.length;
198
+ const lena = (0, util_1.getBpDisplayStr)(len);
199
+ return lenRef > 5 || lenAlt > 5
200
+ ? `${lena} INS`
201
+ : makeDescriptionString('insertion', len > 5 ? lena : ref, alt);
202
+ }
203
+ else if (ref.length > alt.length) {
204
+ const lenRef = ref.length;
205
+ const lenAlt = alt.length;
206
+ const lena = (0, util_1.getBpDisplayStr)(lenRef - lenAlt);
207
+ return lenRef > 5 || lenAlt > 5
208
+ ? `${lena} DEL`
209
+ : makeDescriptionString('deletion', ref, alt);
210
+ }
211
+ else {
212
+ return makeDescriptionString('indel', ref, alt);
213
+ }
126
214
  }
127
215
  function makeDescriptionString(soTerm, ref, alt) {
128
- return `${soTerm} ${ref} -> ${alt}`;
216
+ return `${soTerm} ${[ref, alt].join(' -> ')}`;
217
+ }
218
+ function makeSimpleAltString(genotype, ref, alt) {
219
+ return genotype
220
+ .split(/[/|]/)
221
+ .map(r => r === '.'
222
+ ? '.'
223
+ : +r === 0
224
+ ? `ref(${ref.length < 10 ? ref : (0, util_1.getBpDisplayStr)(ref.length)})`
225
+ : getMinimalDesc(ref, alt[+r - 1] || ''))
226
+ .join(genotype.includes('|') ? '|' : '/');
129
227
  }
@@ -90,17 +90,27 @@ class VcfTabixAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
90
90
  const lines = txt.split(/\n|\r\n|\r/);
91
91
  const header = lines[0].split('\t');
92
92
  const { parser } = await this.configure();
93
- const s = new Set(parser.samples);
94
- return lines
93
+ const metadataLines = lines
95
94
  .slice(1)
95
+ .filter(f => !!f)
96
96
  .map(line => {
97
- const cols = line.split('\t');
97
+ const [name, ...rest] = line.split('\t');
98
98
  return {
99
- name: cols[0],
100
- ...Object.fromEntries(cols.slice(1).map((c, idx) => [header[idx + 1], c])),
99
+ ...Object.fromEntries(header.slice(1).map((c, idx) => [c, rest[idx] || ''])),
100
+ name: name,
101
101
  };
102
- })
103
- .filter(f => s.has(f.name));
102
+ });
103
+ const vcfSampleSet = new Set(parser.samples);
104
+ const metadataSet = new Set(metadataLines.map(r => r.name));
105
+ const metadataNotInVcfSamples = [...metadataSet].filter(f => !vcfSampleSet.has(f));
106
+ const vcfSamplesNotInMetadata = [...vcfSampleSet].filter(f => !metadataSet.has(f));
107
+ if (metadataNotInVcfSamples.length) {
108
+ console.warn(`There are ${metadataNotInVcfSamples.length} samples in metadata file (${metadataLines.length} lines) not in VCF (${parser.samples.length} samples):`, (0, util_1.shorten2)(metadataNotInVcfSamples.join(',')));
109
+ }
110
+ if (vcfSamplesNotInMetadata.length) {
111
+ console.warn(`There are ${vcfSamplesNotInMetadata.length} samples in VCF file (${parser.samples.length} samples) not in metadata file (${metadataLines.length} lines):`, (0, util_1.shorten2)(vcfSamplesNotInMetadata.map(m => m).join(',')));
112
+ }
113
+ return metadataLines.filter(f => vcfSampleSet.has(f.name));
104
114
  }
105
115
  }
106
116
  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;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getMultiVariantFeaturesAutorun = getMultiVariantFeaturesAutorun;
4
4
  const util_1 = require("@jbrowse/core/util");
5
5
  const aborting_1 = require("@jbrowse/core/util/aborting");
6
+ const stopToken_1 = require("@jbrowse/core/util/stopToken");
6
7
  const tracks_1 = require("@jbrowse/core/util/tracks");
7
8
  const mobx_1 = require("mobx");
8
9
  const mobx_state_tree_1 = require("mobx-state-tree");
@@ -13,16 +14,20 @@ function getMultiVariantFeaturesAutorun(self) {
13
14
  if (!view.initialized || !self.statsReadyAndRegionNotTooLarge) {
14
15
  return;
15
16
  }
17
+ const stopToken = (0, stopToken_1.createStopToken)();
18
+ self.setSimplifiedFeaturesLoading(stopToken);
16
19
  const { rpcManager } = (0, util_1.getSession)(self);
17
- const { sources, minorAlleleFrequencyFilter, adapterConfig } = self;
20
+ const { lengthCutoffFilter, sources, minorAlleleFrequencyFilter, adapterConfig, } = self;
18
21
  if (sources) {
19
22
  const sessionId = (0, tracks_1.getRpcSessionId)(self);
20
23
  const { sampleInfo, hasPhased, features } = (await rpcManager.call(sessionId, 'MultiVariantGetSimplifiedFeatures', {
21
24
  regions: view.dynamicBlocks.contentBlocks,
22
25
  sources,
23
26
  minorAlleleFrequencyFilter,
27
+ lengthCutoffFilter,
24
28
  sessionId,
25
29
  adapterConfig,
30
+ stopToken,
26
31
  }));
27
32
  if ((0, mobx_state_tree_1.isAlive)(self)) {
28
33
  self.setHasPhased(hasPhased);
@@ -37,5 +42,7 @@ function getMultiVariantFeaturesAutorun(self) {
37
42
  (0, util_1.getSession)(self).notifyError(`${e}`, e);
38
43
  }
39
44
  }
40
- }, { delay: 1000 }));
45
+ }, {
46
+ delay: 1000,
47
+ }));
41
48
  }
@@ -16,12 +16,13 @@ function getMultiVariantSourcesAutorun(self) {
16
16
  }
17
17
  const { rpcManager } = (0, util_1.getSession)(self);
18
18
  const { adapterConfig } = self;
19
- const token = (0, stopToken_1.createStopToken)();
20
- self.setSourcesLoading(token);
19
+ const stopToken = (0, stopToken_1.createStopToken)();
20
+ self.setSourcesLoading(stopToken);
21
21
  const sessionId = (0, tracks_1.getRpcSessionId)(self);
22
22
  const sources = (await rpcManager.call(sessionId, 'MultiVariantGetSources', {
23
23
  sessionId,
24
24
  adapterConfig,
25
+ stopToken,
25
26
  }));
26
27
  if ((0, mobx_state_tree_1.isAlive)(self)) {
27
28
  self.setSources(sources);
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ const MultiLinearVariantRenderer_1 = __importDefault(require("./MultiLinearVaria
14
14
  const SplitVcfTabixAdapter_1 = __importDefault(require("./SplitVcfTabixAdapter"));
15
15
  const StructuralVariantChordRenderer_1 = __importDefault(require("./StructuralVariantChordRenderer"));
16
16
  const VariantFeatureWidget_1 = __importDefault(require("./VariantFeatureWidget"));
17
+ const MultiVariantClusterGenotypeMatrix_1 = require("./VariantRPC/MultiVariantClusterGenotypeMatrix");
17
18
  const MultiVariantGetGenotypeMatrix_1 = require("./VariantRPC/MultiVariantGetGenotypeMatrix");
18
19
  const MultiVariantGetSimplifiedFeatures_1 = require("./VariantRPC/MultiVariantGetSimplifiedFeatures");
19
20
  const MultiVariantGetSources_1 = require("./VariantRPC/MultiVariantGetSources");
@@ -42,6 +43,7 @@ class VariantsPlugin extends Plugin_1.default {
42
43
  (0, ChordVariantDisplay_1.default)(pluginManager);
43
44
  pluginManager.addRpcMethod(() => new MultiVariantGetSources_1.MultiVariantGetSources(pluginManager));
44
45
  pluginManager.addRpcMethod(() => new MultiVariantGetGenotypeMatrix_1.MultiVariantGetGenotypeMatrix(pluginManager));
46
+ pluginManager.addRpcMethod(() => new MultiVariantClusterGenotypeMatrix_1.MultiVariantClusterGenotypeMatrix(pluginManager));
45
47
  pluginManager.addRpcMethod(() => new MultiVariantGetSimplifiedFeatures_1.MultiVariantGetSimplifiedFeatures(pluginManager));
46
48
  }
47
49
  }
@@ -1,4 +1,4 @@
1
- import type { SampleInfo, Source } from '../shared/types';
1
+ import type { SampleInfo, Source } from './types';
2
2
  import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
3
3
  import type { Feature } from '@jbrowse/core/util';
4
4
  import type { Instance } from 'mobx-state-tree';
@@ -90,6 +90,9 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
90
90
  renderingMode: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
91
91
  rowHeightSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
92
92
  autoHeight: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
93
+ lengthCutoffFilter: import("mobx-state-tree").IType<number | undefined, number, number>;
94
+ jexlFilters: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IArrayType<import("mobx-state-tree").ISimpleType<string>>>;
95
+ referenceDrawingMode: import("mobx-state-tree").IType<string | undefined, string, string>;
93
96
  }, {
94
97
  rendererTypeName: string;
95
98
  error: unknown;
@@ -233,19 +236,28 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
233
236
  renderProps(): any;
234
237
  } & {
235
238
  sourcesLoadingStopToken: string | undefined;
239
+ simplifiedFeaturesStopToken: string | undefined;
236
240
  featureUnderMouseVolatile: Feature | undefined;
237
241
  sourcesVolatile: Source[] | undefined;
238
242
  featuresVolatile: Feature[] | undefined;
239
243
  hasPhased: boolean;
240
244
  sampleInfo: undefined | Record<string, SampleInfo>;
241
- hoveredGenotype: string | undefined;
245
+ hoveredGenotype: {
246
+ genotype: string;
247
+ name: string;
248
+ } | undefined;
242
249
  } & {
250
+ setJexlFilters(f?: string[]): void;
243
251
  setRowHeight(arg: number): void;
244
- setHoveredGenotype(arg: string): void;
252
+ setHoveredGenotype(arg?: {
253
+ genotype: string;
254
+ name: string;
255
+ }): void;
245
256
  setFeatures(f: Feature[]): void;
246
257
  setLayout(layout: Source[]): void;
247
258
  clearLayout(): void;
248
259
  setSourcesLoading(str: string): void;
260
+ setSimplifiedFeaturesLoading(str: string): void;
249
261
  setSources(sources: Source[]): void;
250
262
  setMafFilter(arg: number): void;
251
263
  setShowSidebarLabels(arg: boolean): void;
@@ -253,8 +265,19 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
253
265
  setAutoHeight(arg: boolean): void;
254
266
  setHasPhased(arg: boolean): void;
255
267
  setSampleInfo(arg: Record<string, SampleInfo>): void;
268
+ setReferenceDrawingMode(arg: string): void;
256
269
  } & {
270
+ readonly activeFilters: any;
257
271
  readonly preSources: Source[] | undefined;
272
+ readonly sourcesWithoutLayout: {
273
+ label: string;
274
+ id: string;
275
+ baseUri?: string;
276
+ name: string;
277
+ color?: string;
278
+ group?: string;
279
+ HP?: number;
280
+ }[] | undefined;
258
281
  readonly sources: {
259
282
  label: string;
260
283
  id: string;
@@ -265,6 +288,17 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
265
288
  HP?: number;
266
289
  }[] | undefined;
267
290
  } & {
291
+ readonly sourceMap: {
292
+ [k: string]: {
293
+ label: string;
294
+ id: string;
295
+ baseUri?: string;
296
+ name: string;
297
+ color?: string;
298
+ group?: string;
299
+ HP?: number;
300
+ };
301
+ } | undefined;
268
302
  readonly rowHeight: number;
269
303
  adapterProps(): any;
270
304
  trackMenuItems(): (import("@jbrowse/core/ui").MenuDivider | import("@jbrowse/core/ui").MenuSubHeader | import("@jbrowse/core/ui").NormalMenuItem | import("@jbrowse/core/ui").CheckboxMenuItem | import("@jbrowse/core/ui").RadioMenuItem | import("@jbrowse/core/ui").SubMenuItem | {
@@ -318,6 +352,18 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
318
352
  type?: undefined;
319
353
  checked?: undefined;
320
354
  onClick?: undefined;
355
+ } | {
356
+ label: string;
357
+ type: string;
358
+ subMenu: {
359
+ label: string;
360
+ type: string;
361
+ checked: boolean;
362
+ onClick: () => void;
363
+ }[];
364
+ icon?: undefined;
365
+ checked?: undefined;
366
+ onClick?: undefined;
321
367
  } | {
322
368
  label: string;
323
369
  icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
@@ -330,10 +376,20 @@ export default function MultiVariantBaseModelF(configSchema: AnyConfigurationSch
330
376
  type?: undefined;
331
377
  checked?: undefined;
332
378
  onClick?: undefined;
379
+ } | {
380
+ label: string;
381
+ icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
382
+ muiName: string;
383
+ };
384
+ onClick: () => void;
385
+ type?: undefined;
386
+ checked?: undefined;
387
+ subMenu?: undefined;
333
388
  })[];
334
389
  } & {
335
390
  readonly canDisplayLabels: boolean;
336
391
  readonly totalHeight: number;
392
+ readonly featuresReady: boolean;
337
393
  } & {
338
394
  renderProps(): any;
339
395
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;