@jbrowse/plugin-variants 2.18.0 → 3.0.1

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 (272) hide show
  1. package/dist/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
  2. package/dist/LinearVariantDisplay/model.d.ts +5 -5
  3. package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
  4. package/dist/MultiLinearVariantDisplay/components/Crosshair.js +35 -0
  5. package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
  6. package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -49
  7. package/dist/MultiLinearVariantDisplay/index.js +18 -8
  8. package/dist/MultiLinearVariantDisplay/model.d.ts +113 -40
  9. package/dist/MultiLinearVariantDisplay/model.js +24 -176
  10. package/dist/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
  11. package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -5
  12. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
  13. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +28 -0
  14. package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
  15. package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -16
  16. package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
  17. package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -56
  18. package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
  19. package/dist/MultiLinearVariantMatrixDisplay/model.js +31 -136
  20. package/dist/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
  21. package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
  22. package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
  23. package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +44 -63
  24. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
  25. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -5
  26. package/dist/MultiLinearVariantMatrixRenderer/index.js +2 -2
  27. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
  28. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +99 -0
  29. package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
  30. package/dist/MultiLinearVariantMatrixRenderer/types.js +2 -0
  31. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
  32. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +38 -25
  33. package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
  34. package/dist/MultiLinearVariantRenderer/MultiVariantRendering.js +36 -27
  35. package/dist/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
  36. package/dist/MultiLinearVariantRenderer/configSchema.js +0 -5
  37. package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
  38. package/dist/MultiLinearVariantRenderer/makeImageData.js +67 -0
  39. package/dist/MultiLinearVariantRenderer/types.d.ts +19 -0
  40. package/dist/MultiLinearVariantRenderer/types.js +2 -0
  41. package/dist/MultiVariantBaseRenderer.d.ts +4 -4
  42. package/dist/StructuralVariantChordRenderer/Chord.d.ts +2 -19
  43. package/dist/StructuralVariantChordRenderer/Chord.js +3 -25
  44. package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
  45. package/dist/StructuralVariantChordRenderer/ReactComponent.js +7 -29
  46. package/dist/StructuralVariantChordRenderer/types.d.ts +17 -0
  47. package/dist/StructuralVariantChordRenderer/types.js +2 -0
  48. package/dist/Tooltip.d.ts +2 -2
  49. package/dist/Tooltip.js +6 -32
  50. package/dist/VariantFeatureWidget/Checkbox2.d.ts +1 -2
  51. package/dist/VariantFeatureWidget/Checkbox2.js +2 -5
  52. package/dist/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
  53. package/dist/VariantFeatureWidget/LaunchBreakendPanel.js +66 -69
  54. package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
  55. package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.js +60 -0
  56. package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
  57. package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.js +15 -0
  58. package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
  59. package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +20 -0
  60. package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
  61. package/dist/VariantFeatureWidget/VariantConsequencePanel.js +15 -0
  62. package/dist/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
  63. package/dist/VariantFeatureWidget/VariantFeatureWidget.js +47 -36
  64. package/dist/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
  65. package/dist/VariantFeatureWidget/VariantSampleFilters.js +10 -0
  66. package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
  67. package/dist/VariantFeatureWidget/VariantSampleGrid.js +14 -44
  68. package/dist/VariantFeatureWidget/index.js +17 -7
  69. package/dist/VariantFeatureWidget/types.d.ts +16 -0
  70. package/dist/VariantFeatureWidget/types.js +2 -0
  71. package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
  72. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
  73. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
  74. package/dist/VcfAdapter/VcfAdapter.d.ts +7 -0
  75. package/dist/VcfAdapter/VcfAdapter.js +29 -3
  76. package/dist/VcfAdapter/configSchema.d.ts +8 -0
  77. package/dist/VcfAdapter/configSchema.js +12 -1
  78. package/dist/VcfAdapter/index.js +17 -7
  79. package/dist/VcfFeature/index.js +2 -1
  80. package/dist/VcfFeature/util.js +3 -4
  81. package/dist/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
  82. package/dist/VcfTabixAdapter/configSchema.d.ts +8 -0
  83. package/dist/VcfTabixAdapter/configSchema.js +8 -0
  84. package/dist/VcfTabixAdapter/index.js +17 -7
  85. package/dist/extensionPoints.js +21 -33
  86. package/dist/getMultiVariantFeaturesAutorun.d.ts +4 -7
  87. package/dist/getMultiVariantFeaturesAutorun.js +16 -15
  88. package/dist/getMultiVariantSourcesAutorun.d.ts +1 -6
  89. package/dist/shared/BulkEditPanel.d.ts +4 -5
  90. package/dist/shared/BulkEditPanel.js +69 -88
  91. package/dist/shared/ClusterDialog.d.ts +4 -5
  92. package/dist/shared/ClusterDialog.js +45 -86
  93. package/dist/shared/ColorLegend.d.ts +2 -3
  94. package/dist/shared/ColorLegend.js +8 -10
  95. package/dist/shared/HelpfulTips.d.ts +1 -0
  96. package/dist/shared/HelpfulTips.js +7 -0
  97. package/dist/shared/LegendBar.d.ts +3 -3
  98. package/dist/shared/LegendBar.js +6 -12
  99. package/dist/shared/MAFFilterDialog.d.ts +2 -3
  100. package/dist/shared/MAFFilterDialog.js +14 -42
  101. package/dist/shared/MultiVariantBaseModel.d.ts +341 -0
  102. package/dist/shared/MultiVariantBaseModel.js +316 -0
  103. package/dist/shared/MultiVariantTooltip.d.ts +6 -0
  104. package/dist/shared/MultiVariantTooltip.js +23 -0
  105. package/dist/shared/RectBg.d.ts +2 -3
  106. package/dist/shared/RectBg.js +3 -7
  107. package/dist/shared/RowPalettizer.d.ts +2 -3
  108. package/dist/shared/RowPalettizer.js +30 -28
  109. package/dist/shared/SetColorDialog.d.ts +2 -3
  110. package/dist/shared/SetColorDialog.js +26 -65
  111. package/dist/shared/SetMinMaxDialog.d.ts +1 -2
  112. package/dist/shared/SetMinMaxDialog.js +11 -41
  113. package/dist/shared/SetRowHeightDialog.d.ts +8 -0
  114. package/dist/shared/SetRowHeightDialog.js +18 -0
  115. package/dist/shared/SharedVariantMixin.d.ts +7 -7
  116. package/dist/shared/SourcesDataGrid.d.ts +6 -0
  117. package/dist/shared/SourcesDataGrid.js +68 -0
  118. package/dist/shared/SourcesGrid.d.ts +2 -3
  119. package/dist/shared/SourcesGrid.js +5 -134
  120. package/dist/shared/SourcesGridHeader.d.ts +7 -0
  121. package/dist/shared/SourcesGridHeader.js +41 -0
  122. package/dist/shared/multiVariantColor.d.ts +3 -0
  123. package/dist/shared/multiVariantColor.js +50 -0
  124. package/dist/types.d.ts +14 -0
  125. package/dist/types.js +2 -0
  126. package/dist/util.d.ts +6 -9
  127. package/dist/util.js +47 -14
  128. package/esm/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
  129. package/esm/LinearVariantDisplay/model.d.ts +5 -5
  130. package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
  131. package/esm/MultiLinearVariantDisplay/components/Crosshair.js +30 -0
  132. package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
  133. package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -26
  134. package/esm/MultiLinearVariantDisplay/index.js +1 -1
  135. package/esm/MultiLinearVariantDisplay/model.d.ts +113 -40
  136. package/esm/MultiLinearVariantDisplay/model.js +7 -169
  137. package/esm/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
  138. package/esm/MultiLinearVariantDisplay/renderSvg.js +2 -5
  139. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
  140. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +23 -0
  141. package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
  142. package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -13
  143. package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
  144. package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -33
  145. package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
  146. package/esm/MultiLinearVariantMatrixDisplay/model.js +14 -129
  147. package/esm/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
  148. package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
  149. package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
  150. package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +11 -63
  151. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
  152. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -2
  153. package/esm/MultiLinearVariantMatrixRenderer/index.js +1 -1
  154. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
  155. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +96 -0
  156. package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
  157. package/esm/MultiLinearVariantMatrixRenderer/types.js +1 -0
  158. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
  159. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +6 -26
  160. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
  161. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +34 -5
  162. package/esm/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
  163. package/esm/MultiLinearVariantRenderer/configSchema.js +0 -2
  164. package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
  165. package/esm/MultiLinearVariantRenderer/makeImageData.js +61 -0
  166. package/esm/MultiLinearVariantRenderer/types.d.ts +19 -0
  167. package/esm/MultiLinearVariantRenderer/types.js +1 -0
  168. package/esm/MultiVariantBaseRenderer.d.ts +4 -4
  169. package/esm/StructuralVariantChordRenderer/Chord.d.ts +2 -19
  170. package/esm/StructuralVariantChordRenderer/Chord.js +3 -2
  171. package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
  172. package/esm/StructuralVariantChordRenderer/ReactComponent.js +7 -6
  173. package/esm/StructuralVariantChordRenderer/types.d.ts +17 -0
  174. package/esm/StructuralVariantChordRenderer/types.js +1 -0
  175. package/esm/Tooltip.d.ts +2 -2
  176. package/esm/Tooltip.js +6 -9
  177. package/esm/VariantFeatureWidget/Checkbox2.d.ts +1 -2
  178. package/esm/VariantFeatureWidget/Checkbox2.js +2 -2
  179. package/esm/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
  180. package/esm/VariantFeatureWidget/LaunchBreakendPanel.js +48 -61
  181. package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
  182. package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.js +24 -0
  183. package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
  184. package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.js +9 -0
  185. package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
  186. package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +17 -0
  187. package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
  188. package/esm/VariantFeatureWidget/VariantConsequencePanel.js +9 -0
  189. package/esm/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
  190. package/esm/VariantFeatureWidget/VariantFeatureWidget.js +30 -29
  191. package/esm/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
  192. package/esm/VariantFeatureWidget/VariantSampleFilters.js +7 -0
  193. package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
  194. package/esm/VariantFeatureWidget/VariantSampleGrid.js +15 -22
  195. package/esm/VariantFeatureWidget/types.d.ts +16 -0
  196. package/esm/VariantFeatureWidget/types.js +1 -0
  197. package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
  198. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
  199. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
  200. package/esm/VcfAdapter/VcfAdapter.d.ts +7 -0
  201. package/esm/VcfAdapter/VcfAdapter.js +31 -5
  202. package/esm/VcfAdapter/configSchema.d.ts +8 -0
  203. package/esm/VcfAdapter/configSchema.js +12 -1
  204. package/esm/VcfFeature/index.js +2 -1
  205. package/esm/VcfFeature/util.js +3 -4
  206. package/esm/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
  207. package/esm/VcfTabixAdapter/configSchema.d.ts +8 -0
  208. package/esm/VcfTabixAdapter/configSchema.js +8 -0
  209. package/esm/extensionPoints.js +21 -33
  210. package/esm/getMultiVariantFeaturesAutorun.d.ts +4 -7
  211. package/esm/getMultiVariantFeaturesAutorun.js +16 -15
  212. package/esm/getMultiVariantSourcesAutorun.d.ts +1 -6
  213. package/esm/shared/BulkEditPanel.d.ts +4 -5
  214. package/esm/shared/BulkEditPanel.js +70 -66
  215. package/esm/shared/ClusterDialog.d.ts +4 -5
  216. package/esm/shared/ClusterDialog.js +44 -62
  217. package/esm/shared/ColorLegend.d.ts +2 -3
  218. package/esm/shared/ColorLegend.js +8 -10
  219. package/esm/shared/HelpfulTips.d.ts +1 -0
  220. package/esm/shared/HelpfulTips.js +4 -0
  221. package/esm/shared/LegendBar.d.ts +3 -3
  222. package/esm/shared/LegendBar.js +7 -13
  223. package/esm/shared/MAFFilterDialog.d.ts +2 -3
  224. package/esm/shared/MAFFilterDialog.js +14 -19
  225. package/esm/shared/MultiVariantBaseModel.d.ts +341 -0
  226. package/esm/shared/MultiVariantBaseModel.js +277 -0
  227. package/esm/shared/MultiVariantTooltip.d.ts +6 -0
  228. package/esm/shared/MultiVariantTooltip.js +17 -0
  229. package/esm/shared/RectBg.d.ts +2 -3
  230. package/esm/shared/RectBg.js +3 -4
  231. package/esm/shared/RowPalettizer.d.ts +2 -3
  232. package/esm/shared/RowPalettizer.js +30 -25
  233. package/esm/shared/SetColorDialog.d.ts +2 -3
  234. package/esm/shared/SetColorDialog.js +26 -42
  235. package/esm/shared/SetMinMaxDialog.d.ts +1 -2
  236. package/esm/shared/SetMinMaxDialog.js +11 -18
  237. package/esm/shared/SetRowHeightDialog.d.ts +8 -0
  238. package/esm/shared/SetRowHeightDialog.js +15 -0
  239. package/esm/shared/SharedVariantMixin.d.ts +7 -7
  240. package/esm/shared/SourcesDataGrid.d.ts +6 -0
  241. package/esm/shared/SourcesDataGrid.js +62 -0
  242. package/esm/shared/SourcesGrid.d.ts +2 -3
  243. package/esm/shared/SourcesGrid.js +5 -111
  244. package/esm/shared/SourcesGridHeader.d.ts +7 -0
  245. package/esm/shared/SourcesGridHeader.js +35 -0
  246. package/esm/shared/multiVariantColor.d.ts +3 -0
  247. package/esm/shared/multiVariantColor.js +45 -0
  248. package/esm/types.d.ts +14 -0
  249. package/esm/types.js +1 -0
  250. package/esm/util.d.ts +6 -9
  251. package/esm/util.js +43 -13
  252. package/package.json +12 -13
  253. package/dist/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
  254. package/dist/VariantFeatureWidget/AnnotGrid.js +0 -39
  255. package/dist/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
  256. package/dist/VariantFeatureWidget/VariantAnnotationTable.js +0 -16
  257. package/dist/configSchema.d.ts +0 -34
  258. package/dist/configSchema.js +0 -44
  259. package/dist/shared/DraggableDialog.d.ts +0 -6
  260. package/dist/shared/DraggableDialog.js +0 -62
  261. package/dist/shared/Tooltip.d.ts +0 -18
  262. package/dist/shared/Tooltip.js +0 -38
  263. package/esm/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
  264. package/esm/VariantFeatureWidget/AnnotGrid.js +0 -13
  265. package/esm/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
  266. package/esm/VariantFeatureWidget/VariantAnnotationTable.js +0 -10
  267. package/esm/configSchema.d.ts +0 -34
  268. package/esm/configSchema.js +0 -42
  269. package/esm/shared/DraggableDialog.d.ts +0 -6
  270. package/esm/shared/DraggableDialog.js +0 -34
  271. package/esm/shared/Tooltip.d.ts +0 -18
  272. package/esm/shared/Tooltip.js +0 -33
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const util_1 = require("./util");
4
4
  function dataFromVariant(variant, parser) {
5
- const { REF = '', ALT, POS, CHROM, ID } = variant;
5
+ const { FORMAT, REF = '', ALT, POS, CHROM, ID } = variant;
6
6
  const start = POS - 1;
7
7
  const [type, description] = (0, util_1.getSOTermAndDescription)(REF, ALT, parser);
8
8
  return {
@@ -13,6 +13,7 @@ function dataFromVariant(variant, parser) {
13
13
  type,
14
14
  name: ID === null || ID === void 0 ? void 0 : ID.join(','),
15
15
  aliases: ID && ID.length > 1 ? ID.slice(1) : undefined,
16
+ format: FORMAT,
16
17
  };
17
18
  }
18
19
  function getEnd(variant) {
@@ -51,10 +51,9 @@ function getSOTermAndDescription(ref, alt, parser) {
51
51
  return suffixes.length ? `${prefix} -> ${suffixes.join(',')}` : prefix;
52
52
  }));
53
53
  }
54
- if (soTerms.size) {
55
- return [[...soTerms].join(','), [...descriptions].join(',')];
56
- }
57
- return [];
54
+ return soTerms.size
55
+ ? [[...soTerms].join(','), [...descriptions].join(',')]
56
+ : [];
58
57
  }
59
58
  function getSOAndDescFromAltDefs(alt, parser) {
60
59
  if (typeof alt === 'string' && !alt.startsWith('<')) {
@@ -6,24 +6,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const tabix_1 = require("@gmod/tabix");
7
7
  const vcf_1 = __importDefault(require("@gmod/vcf"));
8
8
  const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
9
+ const util_1 = require("@jbrowse/core/util");
9
10
  const io_1 = require("@jbrowse/core/util/io");
10
11
  const rxjs_1 = require("@jbrowse/core/util/rxjs");
11
12
  const VcfFeature_1 = __importDefault(require("../VcfFeature"));
12
13
  class VcfTabixAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
13
- async configurePre() {
14
- const pm = this.pluginManager;
14
+ async configurePre(opts) {
15
+ const { statusCallback = () => { } } = opts || {};
15
16
  const vcfGzLocation = this.getConf('vcfGzLocation');
16
17
  const location = this.getConf(['index', 'location']);
17
18
  const indexType = this.getConf(['index', 'indexType']);
18
- const filehandle = (0, io_1.openLocation)(vcfGzLocation, pm);
19
+ const filehandle = (0, io_1.openLocation)(vcfGzLocation, this.pluginManager);
19
20
  const isCSI = indexType === 'CSI';
20
21
  const vcf = new tabix_1.TabixIndexedFile({
21
22
  filehandle,
22
- csiFilehandle: isCSI ? (0, io_1.openLocation)(location, pm) : undefined,
23
- tbiFilehandle: !isCSI ? (0, io_1.openLocation)(location, pm) : undefined,
23
+ csiFilehandle: isCSI
24
+ ? (0, io_1.openLocation)(location, this.pluginManager)
25
+ : undefined,
26
+ tbiFilehandle: !isCSI
27
+ ? (0, io_1.openLocation)(location, this.pluginManager)
28
+ : undefined,
24
29
  chunkCacheSize: 50 * 2 ** 20,
25
30
  });
26
- const header = await vcf.getHeader();
31
+ const header = await (0, util_1.updateStatus)('Downloading index', statusCallback, () => vcf.getHeader());
27
32
  return {
28
33
  vcf,
29
34
  parser: new vcf_1.default({ header }),
@@ -53,8 +58,9 @@ class VcfTabixAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
53
58
  getFeatures(query, opts = {}) {
54
59
  return (0, rxjs_1.ObservableCreate)(async (observer) => {
55
60
  const { refName, start, end } = query;
61
+ const { statusCallback = () => { } } = opts;
56
62
  const { vcf, parser } = await this.configure();
57
- await vcf.getLines(refName, start, end, {
63
+ await (0, util_1.updateStatus)('Downloading variants', statusCallback, () => vcf.getLines(refName, start, end, {
58
64
  lineCallback: (line, fileOffset) => {
59
65
  observer.next(new VcfFeature_1.default({
60
66
  variant: parser.parseLine(line),
@@ -63,15 +69,35 @@ class VcfTabixAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
63
69
  }));
64
70
  },
65
71
  ...opts,
66
- });
72
+ }));
67
73
  observer.complete();
68
74
  }, opts.stopToken);
69
75
  }
70
76
  async getSources() {
71
- const { parser } = await this.configure();
72
- return parser.samples.map(name => ({
73
- name,
74
- }));
77
+ const conf = this.getConf('samplesTsvLocation');
78
+ if (conf.uri === '' || conf.uri === '/path/to/samples.tsv') {
79
+ const { parser } = await this.configure();
80
+ return parser.samples.map(name => ({
81
+ name,
82
+ }));
83
+ }
84
+ else {
85
+ const txt = await (0, util_1.fetchAndMaybeUnzipText)((0, io_1.openLocation)(conf, this.pluginManager));
86
+ const lines = txt.split(/\n|\r\n|\r/);
87
+ const header = lines[0].split('\t');
88
+ const { parser } = await this.configure();
89
+ const s = new Set(parser.samples);
90
+ return lines
91
+ .slice(1)
92
+ .map(line => {
93
+ const cols = line.split('\t');
94
+ return {
95
+ name: cols[0],
96
+ ...Object.fromEntries(cols.slice(1).map((c, idx) => [header[idx + 1], c])),
97
+ };
98
+ })
99
+ .filter(f => s.has(f.name));
100
+ }
75
101
  }
76
102
  freeResources() { }
77
103
  }
@@ -20,5 +20,13 @@ declare const VcfTabixAdapter: import("@jbrowse/core/configuration/configuration
20
20
  };
21
21
  };
22
22
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
23
+ samplesTsvLocation: {
24
+ type: string;
25
+ defaultValue: {
26
+ uri: string;
27
+ description: string;
28
+ locationType: string;
29
+ };
30
+ };
23
31
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
24
32
  export default VcfTabixAdapter;
@@ -22,5 +22,13 @@ const VcfTabixAdapter = (0, configuration_1.ConfigurationSchema)('VcfTabixAdapte
22
22
  },
23
23
  },
24
24
  }),
25
+ samplesTsvLocation: {
26
+ type: 'fileLocation',
27
+ defaultValue: {
28
+ uri: '/path/to/samples.tsv',
29
+ description: 'tsv with header like name\tpopulation\tetc. where the first column is required, and is the sample names',
30
+ locationType: 'UriLocation',
31
+ },
32
+ },
25
33
  }, { explicitlyTyped: true });
26
34
  exports.default = VcfTabixAdapter;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -1,51 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = ExtensionPointsF;
4
+ const util_1 = require("@jbrowse/core/util");
4
5
  const tracks_1 = require("@jbrowse/core/util/tracks");
5
6
  function ExtensionPointsF(pluginManager) {
6
7
  pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
7
8
  return (file, index, adapterHint) => {
8
- const regexGuess = /\.vcf\.b?gz$/i;
9
- const adapterName = 'VcfTabixAdapter';
10
9
  const fileName = (0, tracks_1.getFileName)(file);
11
10
  const indexName = index && (0, tracks_1.getFileName)(index);
12
- const obj = {
13
- type: adapterName,
14
- vcfGzLocation: file,
15
- index: {
16
- location: index || (0, tracks_1.makeIndex)(file, '.tbi'),
17
- indexType: (0, tracks_1.makeIndexType)(indexName, 'CSI', 'TBI'),
18
- },
19
- };
20
- if (regexGuess.test(fileName) && !adapterHint) {
21
- return obj;
11
+ if ((0, util_1.testAdapter)(fileName, /\.vcf\.b?gz$/i, adapterHint, 'VcfTabixAdapter')) {
12
+ return {
13
+ type: 'VcfTabixAdapter',
14
+ vcfGzLocation: file,
15
+ index: {
16
+ location: index || (0, tracks_1.makeIndex)(file, '.tbi'),
17
+ indexType: (0, tracks_1.makeIndexType)(indexName, 'CSI', 'TBI'),
18
+ },
19
+ };
20
+ }
21
+ else if ((0, util_1.testAdapter)(fileName, /\.vcf(\.gz)?$/i, adapterHint, 'VcfAdapter')) {
22
+ return {
23
+ type: 'VcfAdapter',
24
+ vcfLocation: file,
25
+ };
22
26
  }
23
- if (adapterHint === adapterName) {
24
- return obj;
27
+ else {
28
+ return adapterGuesser(file, index, adapterHint);
25
29
  }
26
- return adapterGuesser(file, index, adapterHint);
27
30
  };
28
31
  });
29
32
  pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
30
33
  return (adapterName) => {
31
- if (adapterName === 'VcfTabixAdapter' || adapterName === 'VcfAdapter') {
32
- return 'VariantTrack';
33
- }
34
- return trackTypeGuesser(adapterName);
35
- };
36
- });
37
- pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
38
- return (file, index, adapterHint) => {
39
- const regexGuess = /\.vcf$/i;
40
- const adapterName = 'VcfAdapter';
41
- const fileName = (0, tracks_1.getFileName)(file);
42
- if (regexGuess.test(fileName) || adapterHint === adapterName) {
43
- return {
44
- type: adapterName,
45
- vcfLocation: file,
46
- };
47
- }
48
- return adapterGuesser(file, index, adapterHint);
34
+ return ['VcfTabixAdapter', 'VcfAdapter'].includes(adapterName)
35
+ ? 'VariantTrack'
36
+ : trackTypeGuesser(adapterName);
49
37
  };
50
38
  });
51
39
  }
@@ -1,19 +1,16 @@
1
+ import type { SampleInfo, Source } from './types';
1
2
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
3
  import type { Feature } from '@jbrowse/core/util';
3
- export interface Source {
4
- name: string;
5
- color?: string;
6
- group?: string;
7
- [key: string]: string | undefined;
8
- }
9
4
  export declare function getMultiVariantFeaturesAutorun(self: {
10
5
  configuration: AnyConfigurationModel;
11
6
  adapterConfig: AnyConfigurationModel;
12
7
  sources?: Source[];
13
- mafFilter: number;
8
+ minorAlleleFrequencyFilter: number;
14
9
  statsReadyAndRegionNotTooLarge: boolean;
15
10
  adapterProps: () => Record<string, unknown>;
16
11
  setError: (error: unknown) => void;
17
12
  setFeatures: (f: Feature[]) => void;
18
13
  setMessage: (str: string) => void;
14
+ setHasPhased: (arg: boolean) => void;
15
+ setSampleInfo: (arg: Record<string, SampleInfo>) => void;
19
16
  }): void;
@@ -14,25 +14,26 @@ function getMultiVariantFeaturesAutorun(self) {
14
14
  return;
15
15
  }
16
16
  const { rpcManager } = (0, util_1.getSession)(self);
17
- const { sources, mafFilter, adapterConfig } = self;
18
- if (!sources) {
19
- return;
20
- }
21
- const sessionId = (0, tracks_1.getRpcSessionId)(self);
22
- const features = (await rpcManager.call(sessionId, 'MultiVariantGetSimplifiedFeatures', {
23
- regions: view.dynamicBlocks.contentBlocks,
24
- sources,
25
- mafFilter,
26
- sessionId,
27
- adapterConfig,
28
- }));
29
- if ((0, mobx_state_tree_1.isAlive)(self)) {
30
- self.setFeatures(features.map(f => new util_1.SimpleFeature(f)));
17
+ const { sources, minorAlleleFrequencyFilter, adapterConfig } = self;
18
+ if (sources) {
19
+ const sessionId = (0, tracks_1.getRpcSessionId)(self);
20
+ const { sampleInfo, hasPhased, features } = (await rpcManager.call(sessionId, 'MultiVariantGetSimplifiedFeatures', {
21
+ regions: view.dynamicBlocks.contentBlocks,
22
+ sources,
23
+ minorAlleleFrequencyFilter,
24
+ sessionId,
25
+ adapterConfig,
26
+ }));
27
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
28
+ self.setHasPhased(hasPhased);
29
+ self.setSampleInfo(sampleInfo);
30
+ self.setFeatures(features.map(f => new util_1.SimpleFeature(f)));
31
+ }
31
32
  }
32
33
  }
33
34
  catch (e) {
35
+ console.error(e);
34
36
  if (!(0, aborting_1.isAbortException)(e) && (0, mobx_state_tree_1.isAlive)(self)) {
35
- console.error(e);
36
37
  (0, util_1.getSession)(self).notifyError(`${e}`, e);
37
38
  }
38
39
  }
@@ -1,10 +1,5 @@
1
+ import type { Source } from './types';
1
2
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
- export interface Source {
3
- name: string;
4
- color?: string;
5
- group?: string;
6
- [key: string]: string | undefined;
7
- }
8
3
  export declare function getMultiVariantSourcesAutorun(self: {
9
4
  configuration: AnyConfigurationModel;
10
5
  adapterConfig: AnyConfigurationModel;
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { type Source } from '../util';
3
- export default function BulkEditPanel({ setCurrLayout, currLayout, }: {
1
+ import type { Source } from '../types';
2
+ export default function BulkEditPanel({ onClose, currLayout, }: {
4
3
  currLayout: Source[];
5
- setCurrLayout: (arg: Source[]) => void;
6
- }): React.JSX.Element;
4
+ onClose: (arg?: Source[]) => void;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,30 +1,8 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.default = BulkEditPanel;
27
- const react_1 = __importStar(require("react"));
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
28
6
  const ui_1 = require("@jbrowse/core/ui");
29
7
  const material_1 = require("@mui/material");
30
8
  const mui_1 = require("tss-react/mui");
@@ -33,71 +11,74 @@ const useStyles = (0, mui_1.makeStyles)()({
33
11
  fontFamily: 'Courier New',
34
12
  },
35
13
  });
36
- function BulkEditPanel({ setCurrLayout, currLayout, }) {
14
+ function BulkEditPanel({ onClose, currLayout, }) {
37
15
  const { classes } = useStyles();
38
16
  const [val, setVal] = (0, react_1.useState)('');
39
17
  const [error, setError] = (0, react_1.useState)();
40
- return (react_1.default.createElement("div", null,
41
- react_1.default.createElement(material_1.Typography, null, "Paste CSV or TSV. If a header column is present. First line is a header. If a column called \"name\" is present, it uses that to connect to IDs in the table, otherwise it uses the first column no."),
42
- react_1.default.createElement(material_1.TextField, { variant: "outlined", multiline: true, minRows: 5, placeholder: 'name,population\nHG00098,GBR\nHG00101,GBR\nHG00459,CHS\n...', maxRows: 10, fullWidth: true, value: val, onChange: event => {
43
- setVal(event.target.value);
44
- }, slotProps: {
45
- input: {
46
- classes: {
47
- input: classes.textAreaFont,
48
- },
49
- },
50
- } }),
51
- react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => {
52
- const lines = val
53
- .split('\n')
54
- .map(f => f.trim())
55
- .filter(f => !!f);
56
- const fields = lines[0].split(/[,\t]/gm);
57
- if (fields.includes('name')) {
58
- setError('');
59
- const oldLayout = currLayout.map(record => [record.name, record]);
60
- const newData = Object.fromEntries(lines.slice(1).map(line => {
61
- const cols = line.split(/[,\t]/gm);
62
- const newRecord = Object.fromEntries(cols.map((col, idx) => [fields[idx], col]));
63
- return [
64
- newRecord.name,
65
- { ...newRecord, ...oldLayout[newRecord.name] },
66
- ];
67
- }));
68
- setCurrLayout(currLayout.map(record => ({
69
- ...record,
70
- ...newData[record.name],
71
- })));
72
- }
73
- else {
74
- setError(new Error('No "name" column found on line 1'));
75
- }
76
- } }, "Update rows"),
77
- react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => {
78
- const lines = val
79
- .split('\n')
80
- .map(f => f.trim())
81
- .filter(f => !!f);
82
- const fields = lines[0].split(/[,\t]/gm);
83
- if (fields.includes('name')) {
84
- setError('');
85
- const oldLayout = currLayout.map(record => [record.name, record]);
86
- const newData = Object.fromEntries(lines.slice(1).map(line => {
87
- const cols = line.split(/[,\t]/gm);
88
- const newRecord = Object.fromEntries(cols.map((col, idx) => [fields[idx], col]));
89
- return [
90
- newRecord.name,
91
- { ...newRecord, ...oldLayout[newRecord.name] },
92
- ];
93
- }));
94
- setCurrLayout(currLayout.map(record => ({
95
- ...newData[record.name],
96
- })));
97
- }
98
- else {
99
- setError(new Error('No "name" column found on line 1'));
100
- }
101
- } }, "Replace rows"),
102
- error ? react_1.default.createElement(ui_1.ErrorMessage, { error: error }) : null));
18
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Paste CSV or TSV. If a header column is present. First line is a header. If a column called \"name\" is present, it uses that to connect to IDs in the table, otherwise it uses the first column no." }), error ? (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error }) : null, (0, jsx_runtime_1.jsx)(material_1.TextField, { variant: "outlined", multiline: true, minRows: 5, placeholder: 'name,population\nHG00098,GBR\nHG00101,GBR\nHG00459,CHS\n...', maxRows: 10, fullWidth: true, value: val, onChange: event => {
19
+ setVal(event.target.value);
20
+ }, slotProps: {
21
+ input: {
22
+ classes: {
23
+ input: classes.textAreaFont,
24
+ },
25
+ },
26
+ } })] }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
27
+ const lines = val
28
+ .split('\n')
29
+ .map(f => f.trim())
30
+ .filter(f => !!f);
31
+ const fields = lines[0].split(/[,\t]/gm);
32
+ if (fields.includes('name')) {
33
+ setError('');
34
+ const oldLayout = Object.fromEntries(currLayout.map(record => [record.name, record]));
35
+ const newData = Object.fromEntries(lines.slice(1).map(line => {
36
+ const cols = line.split(/[,\t]/gm);
37
+ const newRecord = Object.fromEntries(cols.map((col, idx) => [fields[idx], col]));
38
+ return [
39
+ newRecord.name,
40
+ {
41
+ ...newRecord,
42
+ ...oldLayout[newRecord.name],
43
+ },
44
+ ];
45
+ }));
46
+ onClose(currLayout.map(record => ({
47
+ ...record,
48
+ ...newData[record.name],
49
+ })));
50
+ }
51
+ else {
52
+ setError(new Error('No "name" column found on line 1'));
53
+ }
54
+ }, children: "Update rows" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", onClick: () => {
55
+ const lines = val
56
+ .split('\n')
57
+ .map(f => f.trim())
58
+ .filter(f => !!f);
59
+ const fields = lines[0].split(/[,\t]/gm);
60
+ if (fields.includes('name')) {
61
+ setError('');
62
+ const oldLayout = Object.fromEntries(currLayout.map(record => [record.name, record]));
63
+ const newData = Object.fromEntries(lines.slice(1).map(line => {
64
+ const cols = line.split(/[,\t]/gm);
65
+ const newRecord = Object.fromEntries(cols.map((col, idx) => [fields[idx], col]));
66
+ return [
67
+ newRecord.name,
68
+ {
69
+ ...newRecord,
70
+ ...oldLayout[newRecord.name],
71
+ },
72
+ ];
73
+ }));
74
+ onClose(currLayout.map(record => ({
75
+ ...newData[record.name],
76
+ })));
77
+ }
78
+ else {
79
+ setError(new Error('No "name" column found on line 1'));
80
+ }
81
+ }, children: "Replace rows" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
82
+ onClose();
83
+ }, children: "Cancel" })] })] }));
103
84
  }
@@ -1,12 +1,11 @@
1
- import React from 'react';
2
- import type { Source } from '../util';
1
+ import type { Source } from '../types';
3
2
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
- export default function HierarchicalCluster({ model, handleClose, }: {
3
+ export default function ClusterDialog({ model, handleClose, }: {
5
4
  model: {
6
5
  sources?: Source[];
7
- mafFilter?: number;
6
+ minorAlleleFrequencyFilter?: number;
8
7
  adapterConfig: AnyConfigurationModel;
9
8
  setLayout: (arg: Source[]) => void;
10
9
  };
11
10
  handleClose: () => void;
12
- }): React.JSX.Element;
11
+ }): import("react/jsx-runtime").JSX.Element;