@vitessce/vit-s 2.0.3 → 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 (215) hide show
  1. package/dist/index.js +44072 -0
  2. package/dist-tsc/CallbackPublisher.d.ts +18 -0
  3. package/dist-tsc/CallbackPublisher.d.ts.map +1 -0
  4. package/dist-tsc/CallbackPublisher.js +62 -0
  5. package/dist-tsc/LoadingIndicator.d.ts +2 -0
  6. package/dist-tsc/LoadingIndicator.d.ts.map +1 -0
  7. package/dist-tsc/LoadingIndicator.js +26 -0
  8. package/dist-tsc/TitleInfo.d.ts +2 -0
  9. package/dist-tsc/TitleInfo.d.ts.map +1 -0
  10. package/dist-tsc/TitleInfo.js +74 -0
  11. package/dist-tsc/VitS.d.ts +50 -0
  12. package/dist-tsc/VitS.d.ts.map +1 -0
  13. package/dist-tsc/VitS.js +139 -0
  14. package/dist-tsc/VitessceGrid.d.ts +23 -0
  15. package/dist-tsc/VitessceGrid.d.ts.map +1 -0
  16. package/dist-tsc/VitessceGrid.js +63 -0
  17. package/dist-tsc/VitessceGrid.test.d.ts +2 -0
  18. package/dist-tsc/VitessceGrid.test.d.ts.map +1 -0
  19. package/dist-tsc/VitessceGrid.test.js +43 -0
  20. package/dist-tsc/Warning.d.ts +2 -0
  21. package/dist-tsc/Warning.d.ts.map +1 -0
  22. package/dist-tsc/Warning.js +45 -0
  23. package/dist-tsc/classNames.d.ts +8 -0
  24. package/dist-tsc/classNames.d.ts.map +1 -0
  25. package/dist-tsc/classNames.js +8 -0
  26. package/dist-tsc/data/AbstractLoader.d.ts +22 -0
  27. package/dist-tsc/data/AbstractLoader.d.ts.map +1 -0
  28. package/dist-tsc/data/AbstractLoader.js +18 -0
  29. package/dist-tsc/data/AbstractTwoStepLoader.d.ts +6 -0
  30. package/dist-tsc/data/AbstractTwoStepLoader.d.ts.map +1 -0
  31. package/dist-tsc/data/AbstractTwoStepLoader.js +7 -0
  32. package/dist-tsc/data/LoaderResult.d.ts +12 -0
  33. package/dist-tsc/data/LoaderResult.d.ts.map +1 -0
  34. package/dist-tsc/data/LoaderResult.js +12 -0
  35. package/dist-tsc/data/index.d.ts +4 -0
  36. package/dist-tsc/data/index.d.ts.map +1 -0
  37. package/dist-tsc/data/index.js +3 -0
  38. package/dist-tsc/data/loader-registry.d.ts +9 -0
  39. package/dist-tsc/data/loader-registry.d.ts.map +1 -0
  40. package/dist-tsc/data/loader-registry.js +27 -0
  41. package/dist-tsc/data-hook-utils.d.ts +65 -0
  42. package/dist-tsc/data-hook-utils.d.ts.map +1 -0
  43. package/dist-tsc/data-hook-utils.js +191 -0
  44. package/dist-tsc/data-hooks.d.ts +73 -0
  45. package/dist-tsc/data-hooks.d.ts.map +1 -0
  46. package/dist-tsc/data-hooks.js +254 -0
  47. package/dist-tsc/errors/AbstractLoaderError.d.ts +10 -0
  48. package/dist-tsc/errors/AbstractLoaderError.d.ts.map +1 -0
  49. package/dist-tsc/errors/AbstractLoaderError.js +13 -0
  50. package/dist-tsc/errors/DataSourceFetchError.d.ts +8 -0
  51. package/dist-tsc/errors/DataSourceFetchError.d.ts.map +1 -0
  52. package/dist-tsc/errors/DataSourceFetchError.js +13 -0
  53. package/dist-tsc/errors/DatasetNotFoundError.d.ts +6 -0
  54. package/dist-tsc/errors/DatasetNotFoundError.d.ts.map +1 -0
  55. package/dist-tsc/errors/DatasetNotFoundError.js +17 -0
  56. package/dist-tsc/errors/LoaderNotFoundError.d.ts +10 -0
  57. package/dist-tsc/errors/LoaderNotFoundError.d.ts.map +1 -0
  58. package/dist-tsc/errors/LoaderNotFoundError.js +17 -0
  59. package/dist-tsc/errors/LoaderValidationError.d.ts +10 -0
  60. package/dist-tsc/errors/LoaderValidationError.d.ts.map +1 -0
  61. package/dist-tsc/errors/LoaderValidationError.js +15 -0
  62. package/dist-tsc/errors/index.d.ts +6 -0
  63. package/dist-tsc/errors/index.d.ts.map +1 -0
  64. package/dist-tsc/errors/index.js +5 -0
  65. package/dist-tsc/hooks.d.ts +76 -0
  66. package/dist-tsc/hooks.d.ts.map +1 -0
  67. package/dist-tsc/hooks.js +262 -0
  68. package/dist-tsc/index.d.ts +12 -0
  69. package/dist-tsc/index.d.ts.map +1 -0
  70. package/dist-tsc/index.js +11 -17
  71. package/dist-tsc/mui-utils.d.ts +2 -0
  72. package/dist-tsc/mui-utils.d.ts.map +1 -0
  73. package/dist-tsc/mui-utils.js +44 -0
  74. package/dist-tsc/plugins.test.fixtures.d.ts +61 -0
  75. package/dist-tsc/plugins.test.fixtures.d.ts.map +1 -0
  76. package/dist-tsc/plugins.test.fixtures.js +76 -0
  77. package/dist-tsc/shared-mui/components.d.ts +2 -0
  78. package/dist-tsc/shared-mui/components.d.ts.map +1 -0
  79. package/dist-tsc/shared-mui/components.js +29 -0
  80. package/dist-tsc/shared-mui/container.d.ts +2 -0
  81. package/dist-tsc/shared-mui/container.d.ts.map +1 -0
  82. package/dist-tsc/shared-mui/container.js +211 -0
  83. package/dist-tsc/shared-mui/styles.d.ts +5 -0
  84. package/dist-tsc/shared-mui/styles.d.ts.map +1 -0
  85. package/dist-tsc/shared-mui/styles.js +109 -0
  86. package/dist-tsc/shared-plot-options/CellColorEncodingOption.d.ts +2 -0
  87. package/dist-tsc/shared-plot-options/CellColorEncodingOption.d.ts.map +1 -0
  88. package/dist-tsc/shared-plot-options/CellColorEncodingOption.js +17 -0
  89. package/dist-tsc/shared-plot-options/OptionSelect.d.ts +2 -0
  90. package/dist-tsc/shared-plot-options/OptionSelect.d.ts.map +1 -0
  91. package/dist-tsc/shared-plot-options/OptionSelect.js +12 -0
  92. package/dist-tsc/shared-plot-options/OptionsContainer.d.ts +2 -0
  93. package/dist-tsc/shared-plot-options/OptionsContainer.d.ts.map +1 -0
  94. package/dist-tsc/shared-plot-options/OptionsContainer.js +9 -0
  95. package/dist-tsc/shared-plot-options/index.d.ts +5 -0
  96. package/dist-tsc/shared-plot-options/index.d.ts.map +1 -0
  97. package/dist-tsc/shared-plot-options/index.js +4 -0
  98. package/dist-tsc/shared-plot-options/styles.d.ts +2 -0
  99. package/dist-tsc/shared-plot-options/styles.d.ts.map +1 -0
  100. package/dist-tsc/shared-plot-options/styles.js +48 -0
  101. package/dist-tsc/state/hooks.d.ts +242 -0
  102. package/dist-tsc/state/hooks.d.ts.map +1 -0
  103. package/dist-tsc/state/hooks.js +615 -0
  104. package/dist-tsc/title-styles.d.ts +2 -0
  105. package/dist-tsc/title-styles.d.ts.map +1 -0
  106. package/dist-tsc/title-styles.js +72 -0
  107. package/dist-tsc/view-config-utils.d.ts +31 -0
  108. package/dist-tsc/view-config-utils.d.ts.map +1 -0
  109. package/dist-tsc/view-config-utils.js +240 -0
  110. package/dist-tsc/view-config-utils.test.d.ts +2 -0
  111. package/dist-tsc/view-config-utils.test.d.ts.map +1 -0
  112. package/dist-tsc/view-config-utils.test.fixtures.d.ts +1049 -0
  113. package/dist-tsc/view-config-utils.test.fixtures.d.ts.map +1 -0
  114. package/dist-tsc/view-config-utils.test.fixtures.js +883 -0
  115. package/dist-tsc/view-config-utils.test.js +210 -0
  116. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.d.ts +8 -0
  117. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.d.ts.map +1 -0
  118. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.js +114 -0
  119. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.d.ts +2 -0
  120. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.d.ts.map +1 -0
  121. package/dist-tsc/vitessce-grid-layout/VitessceGridLayout.test.js +48 -0
  122. package/dist-tsc/vitessce-grid-layout/index.d.ts +2 -0
  123. package/dist-tsc/vitessce-grid-layout/index.d.ts.map +1 -0
  124. package/dist-tsc/vitessce-grid-layout/index.js +1 -0
  125. package/dist-tsc/vitessce-grid-layout/layout-utils.d.ts +15 -0
  126. package/dist-tsc/vitessce-grid-layout/layout-utils.d.ts.map +1 -0
  127. package/dist-tsc/vitessce-grid-layout/layout-utils.js +61 -0
  128. package/dist-tsc/vitessce-grid-layout/layout-utils.test.d.ts +2 -0
  129. package/dist-tsc/vitessce-grid-layout/layout-utils.test.d.ts.map +1 -0
  130. package/dist-tsc/vitessce-grid-layout/layout-utils.test.js +149 -0
  131. package/dist-tsc/vitessce-grid-utils.d.ts +13 -0
  132. package/dist-tsc/vitessce-grid-utils.d.ts.map +1 -0
  133. package/dist-tsc/vitessce-grid-utils.js +141 -0
  134. package/package.json +25 -11
  135. package/src/CallbackPublisher.js +7 -11
  136. package/src/LoadingIndicator.js +1 -2
  137. package/src/TitleInfo.js +12 -85
  138. package/src/VitS.js +143 -85
  139. package/src/VitessceGrid.js +35 -21
  140. package/src/VitessceGrid.test.jsx +23 -8
  141. package/src/Warning.js +4 -4
  142. package/src/data/AbstractLoader.js +2 -25
  143. package/src/data/AbstractTwoStepLoader.js +1 -1
  144. package/src/data/LoaderResult.js +5 -0
  145. package/src/data/index.js +3 -3
  146. package/src/data/loader-registry.js +22 -13
  147. package/src/data-hook-utils.js +119 -86
  148. package/src/data-hooks.js +150 -131
  149. package/src/errors/DataSourceFetchError.js +2 -2
  150. package/src/errors/DatasetNotFoundError.js +1 -1
  151. package/src/errors/LoaderNotFoundError.js +1 -1
  152. package/src/errors/LoaderValidationError.js +1 -1
  153. package/src/errors/index.js +5 -6
  154. package/src/hooks.js +81 -26
  155. package/src/index.js +23 -46
  156. package/src/mui-utils.js +52 -0
  157. package/src/shared-mui/components.js +10 -8
  158. package/src/shared-mui/container.js +1 -1
  159. package/src/shared-mui/styles.js +5 -2
  160. package/src/shared-plot-options/CellColorEncodingOption.js +3 -4
  161. package/src/shared-plot-options/OptionSelect.js +3 -3
  162. package/src/shared-plot-options/OptionsContainer.js +2 -5
  163. package/src/shared-plot-options/index.js +4 -4
  164. package/src/shared-plot-options/styles.js +2 -2
  165. package/src/state/hooks.js +75 -23
  166. package/src/title-styles.js +73 -0
  167. package/src/view-config-utils.js +54 -98
  168. package/src/view-config-utils.test.jsx +223 -0
  169. package/src/vitessce-grid-layout/VitessceGridLayout.js +51 -30
  170. package/src/vitessce-grid-layout/VitessceGridLayout.test.jsx +17 -9
  171. package/src/vitessce-grid-layout/index.js +1 -1
  172. package/src/vitessce-grid-layout/layout-utils.js +1 -1
  173. package/src/vitessce-grid-layout/layout-utils.test.js +2 -1
  174. package/src/vitessce-grid-utils.js +27 -15
  175. package/dist/index.mjs +0 -84801
  176. package/src/component-registry.js +0 -21
  177. package/src/errors/OptionsValidationError.js +0 -25
  178. package/src/file-options-schemas-legacy.js +0 -139
  179. package/src/file-options-schemas-legacy.test.js +0 -138
  180. package/src/file-options-schemas.js +0 -327
  181. package/src/file-options-schemas.test.js +0 -26
  182. package/src/joint-file-types-legacy.js +0 -298
  183. package/src/joint-file-types-legacy.test.js +0 -412
  184. package/src/joint-file-types.js +0 -171
  185. package/src/joint-file-types.test.js +0 -144
  186. package/src/json-schemas.js +0 -9
  187. package/src/plugins.js +0 -186
  188. package/src/plugins.test.js +0 -42
  189. package/src/schemas/config-0.1.0.schema.json +0 -85
  190. package/src/schemas/config-1.0.0.schema.json +0 -733
  191. package/src/schemas/config-1.0.1.schema.json +0 -909
  192. package/src/schemas/config-1.0.10.schema.json +0 -969
  193. package/src/schemas/config-1.0.11.schema.json +0 -990
  194. package/src/schemas/config-1.0.12.schema.json +0 -997
  195. package/src/schemas/config-1.0.13.schema.json +0 -1013
  196. package/src/schemas/config-1.0.14.schema.json +0 -1048
  197. package/src/schemas/config-1.0.15.schema.json +0 -1048
  198. package/src/schemas/config-1.0.16.schema.json +0 -1069
  199. package/src/schemas/config-1.0.16.schema.test.js +0 -32
  200. package/src/schemas/config-1.0.2.schema.json +0 -911
  201. package/src/schemas/config-1.0.3.schema.json +0 -911
  202. package/src/schemas/config-1.0.4.schema.json +0 -949
  203. package/src/schemas/config-1.0.5.schema.json +0 -949
  204. package/src/schemas/config-1.0.6.schema.json +0 -950
  205. package/src/schemas/config-1.0.7.schema.json +0 -950
  206. package/src/schemas/config-1.0.8.schema.json +0 -966
  207. package/src/schemas/config-1.0.9.schema.json +0 -965
  208. package/src/schemas/obsSets.schema.js +0 -195
  209. package/src/schemas/obsSetsTabular.schema.js +0 -39
  210. package/src/schemas/raster.schema.js +0 -121
  211. package/src/schemas/schema-schema.sh +0 -34
  212. package/src/schemas/schema.test-old.js +0 -49
  213. package/src/view-config-upgraders.js +0 -628
  214. package/src/view-config-utils.test.js +0 -95
  215. package/src/view-config-versions.js +0 -68
@@ -1,171 +0,0 @@
1
- import { FileType } from '@vitessce/constants-internal';
2
- import {
3
- validateOptions,
4
- anndataZarrSchema,
5
- } from './file-options-schemas';
6
- import {
7
- expandMoleculesJson,
8
- expandExpressionMatrixZarr,
9
- expandRasterJson,
10
- expandRasterOmeZarr,
11
- expandCellSetsJson,
12
- expandCellsJson,
13
- expandClustersJson,
14
- expandGenesJson,
15
- expandAnndataCellsZarr,
16
- expandAnndataCellSetsZarr,
17
- expandAnndataExpressionMatrixZarr,
18
- } from './joint-file-types-legacy';
19
-
20
- export function expandAnndataZarr(fileDef) {
21
- validateOptions(anndataZarrSchema, fileDef.options);
22
- const baseFileDef = {
23
- url: fileDef.url,
24
- requestInit: fileDef.requestInit,
25
- coordinationValues: {
26
- ...fileDef.coordinationValues,
27
- obsType: fileDef.coordinationValues?.obsType || 'cell',
28
- featureType: fileDef.coordinationValues?.featureType || 'gene',
29
- featureValueType: fileDef.coordinationValues?.featureValueType || 'expression',
30
- },
31
- };
32
- const { options = {} } = fileDef;
33
- return [
34
- // obsFeatureMatrix
35
- ...(options.obsFeatureMatrix ? [{
36
- ...baseFileDef,
37
- fileType: FileType.OBS_FEATURE_MATRIX_ANNDATA_ZARR,
38
- options: options.obsFeatureMatrix,
39
- coordinationValues: {
40
- obsType: baseFileDef.coordinationValues.obsType,
41
- featureType: baseFileDef.coordinationValues.featureType,
42
- featureValueType: baseFileDef.coordinationValues.featureValueType,
43
- },
44
- }] : []),
45
- // obsSets
46
- ...(options.obsSets ? [{
47
- ...baseFileDef,
48
- fileType: FileType.OBS_SETS_ANNDATA_ZARR,
49
- options: options.obsSets,
50
- coordinationValues: {
51
- obsType: baseFileDef.coordinationValues.obsType,
52
- },
53
- }] : []),
54
- // obsLocations
55
- ...(options.obsLocations ? [{
56
- ...baseFileDef,
57
- fileType: FileType.OBS_LOCATIONS_ANNDATA_ZARR,
58
- options: options.obsLocations,
59
- coordinationValues: {
60
- obsType: baseFileDef.coordinationValues.obsType,
61
- },
62
- }] : []),
63
- // obsSegmentations
64
- ...(options.obsSegmentations ? [{
65
- ...baseFileDef,
66
- fileType: FileType.OBS_SEGMENTATIONS_ANNDATA_ZARR,
67
- options: options.obsSegmentations,
68
- coordinationValues: {
69
- obsType: baseFileDef.coordinationValues.obsType,
70
- },
71
- }] : []),
72
- // obsEmbedding
73
- // eslint-disable-next-line no-nested-ternary
74
- ...(options.obsEmbedding ? (
75
- Array.isArray(options.obsEmbedding) ? options.obsEmbedding.map(oe => ({
76
- // obsEmbedding was an array, process each element.
77
- ...baseFileDef,
78
- fileType: FileType.OBS_EMBEDDING_ANNDATA_ZARR,
79
- options: {
80
- path: oe.path,
81
- dims: oe.dims,
82
- },
83
- coordinationValues: {
84
- obsType: baseFileDef.coordinationValues.obsType,
85
- // Move embedding type property out of options and into coordinationValues.
86
- embeddingType: oe.embeddingType,
87
- },
88
- })) : [{
89
- // obsEmbedding was an object.
90
- ...baseFileDef,
91
- fileType: FileType.OBS_EMBEDDING_ANNDATA_ZARR,
92
- options: options.obsEmbedding,
93
- coordinationValues: {
94
- obsType: baseFileDef.coordinationValues.obsType,
95
- embeddingType: baseFileDef.coordinationValues.embeddingType,
96
- },
97
- }]
98
- ) : []),
99
- // obsLabels
100
- // eslint-disable-next-line no-nested-ternary
101
- ...(options.obsLabels ? (
102
- Array.isArray(options.obsLabels) ? options.obsLabels.map(ol => ({
103
- // obsLabels was an array, process each element.
104
- ...baseFileDef,
105
- fileType: FileType.OBS_LABELS_ANNDATA_ZARR,
106
- options: {
107
- path: ol.path,
108
- },
109
- coordinationValues: {
110
- obsType: baseFileDef.coordinationValues.obsType,
111
- // Move obsLabels type property out of options and into coordinationValues.
112
- obsLabelsType: ol.obsLabelsType,
113
- },
114
- })) : [{
115
- // obsLabels was an object.
116
- ...baseFileDef,
117
- fileType: FileType.OBS_LABELS_ANNDATA_ZARR,
118
- options: options.obsLabels,
119
- coordinationValues: {
120
- obsType: baseFileDef.coordinationValues.obsType,
121
- obsLabelsType: baseFileDef.coordinationValues.obsLabelsType,
122
- },
123
- }]
124
- ) : []),
125
- // featureLabels
126
- // eslint-disable-next-line no-nested-ternary
127
- ...(options.featureLabels ? (
128
- Array.isArray(options.featureLabels) ? options.featureLabels.map(fl => ({
129
- // featureLabels was an array, process each element.
130
- ...baseFileDef,
131
- fileType: FileType.FEATURE_LABELS_ANNDATA_ZARR,
132
- options: {
133
- path: fl.path,
134
- },
135
- coordinationValues: {
136
- featureType: baseFileDef.coordinationValues.featureType,
137
- // Move featureLabels type property out of options and into coordinationValues.
138
- featureLabelsType: fl.featureLabelsType,
139
- },
140
- })) : [{
141
- // featureLabels was an object.
142
- ...baseFileDef,
143
- fileType: FileType.FEATURE_LABELS_ANNDATA_ZARR,
144
- options: options.featureLabels,
145
- coordinationValues: {
146
- featureType: baseFileDef.coordinationValues.featureType,
147
- featureLabelsType: baseFileDef.coordinationValues.featureLabelsType,
148
- },
149
- }]
150
- ) : []),
151
- ];
152
- }
153
-
154
- /**
155
- * Built-in joint file type
156
- * expansion functions.
157
- */
158
- export const JOINT_FILE_TYPES = {
159
- [FileType.ANNDATA_ZARR]: expandAnndataZarr,
160
- [FileType.ANNDATA_CELLS_ZARR]: expandAnndataCellsZarr,
161
- [FileType.ANNDATA_CELL_SETS_ZARR]: expandAnndataCellSetsZarr,
162
- [FileType.ANNDATA_EXPRESSION_MATRIX_ZARR]: expandAnndataExpressionMatrixZarr,
163
- [FileType.EXPRESSION_MATRIX_ZARR]: expandExpressionMatrixZarr,
164
- [FileType.RASTER_JSON]: expandRasterJson,
165
- [FileType.RASTER_OME_ZARR]: expandRasterOmeZarr,
166
- [FileType.CELL_SETS_JSON]: expandCellSetsJson,
167
- [FileType.CLUSTERS_JSON]: expandClustersJson,
168
- [FileType.GENES_JSON]: expandGenesJson,
169
- [FileType.CELLS_JSON]: expandCellsJson,
170
- [FileType.MOLECULES_JSON]: expandMoleculesJson,
171
- };
@@ -1,144 +0,0 @@
1
- import { FileType, FILE_TYPE_DATA_TYPE_MAPPING } from '@vitessce/constants-internal';
2
- import {
3
- JOINT_FILE_TYPES,
4
- expandAnndataZarr,
5
- } from './joint-file-types';
6
-
7
-
8
- describe('src/app/joint-file-types.js', () => {
9
- describe('FileType-to-DataType mappings', () => {
10
- it('every file type is mapped to either a data type or a joint file type expansion function', () => {
11
- const fileTypes = Object.values(FileType).sort();
12
- const mappedFileTypes = [
13
- ...Object.keys(FILE_TYPE_DATA_TYPE_MAPPING),
14
- ...Object.keys(JOINT_FILE_TYPES),
15
- ].sort();
16
- expect(fileTypes.length).toEqual(mappedFileTypes.length);
17
- expect(fileTypes).toEqual(mappedFileTypes);
18
- });
19
- });
20
- describe('expandAnndataZarr', () => {
21
- it('fails to expand when there are no options', () => {
22
- expect(() => expandAnndataZarr({
23
- fileType: 'anndata.zarr',
24
- url: 'http://localhost:8000/anndata.zarr',
25
- })).toThrow();
26
- });
27
- it('expands when there is an obsEmbedding object', () => {
28
- expect(expandAnndataZarr({
29
- fileType: 'anndata.zarr',
30
- url: 'http://localhost:8000/anndata.zarr',
31
- options: {
32
- obsLabels: {
33
- path: 'obs/spot_name',
34
- },
35
- featureLabels: {
36
- path: 'var/gene_symbol',
37
- },
38
- obsEmbedding: {
39
- path: 'obsm/pca',
40
- dims: [2, 4],
41
- },
42
- },
43
- coordinationValues: {
44
- obsType: 'spot',
45
- featureType: 'transcript',
46
- obsLabelsType: 'spotName',
47
- featureLabelsType: 'geneSymbol',
48
- embeddingType: 'PCA',
49
- },
50
- })).toEqual([
51
- {
52
- fileType: 'obsEmbedding.anndata.zarr',
53
- url: 'http://localhost:8000/anndata.zarr',
54
- options: {
55
- path: 'obsm/pca',
56
- dims: [2, 4],
57
- },
58
- coordinationValues: {
59
- obsType: 'spot',
60
- embeddingType: 'PCA',
61
- },
62
- },
63
- {
64
- fileType: 'obsLabels.anndata.zarr',
65
- url: 'http://localhost:8000/anndata.zarr',
66
- options: {
67
- path: 'obs/spot_name',
68
- },
69
- coordinationValues: {
70
- obsType: 'spot',
71
- obsLabelsType: 'spotName',
72
- },
73
- },
74
- {
75
- fileType: 'featureLabels.anndata.zarr',
76
- url: 'http://localhost:8000/anndata.zarr',
77
- options: {
78
- path: 'var/gene_symbol',
79
- },
80
- coordinationValues: {
81
- featureType: 'transcript',
82
- featureLabelsType: 'geneSymbol',
83
- },
84
- },
85
- ]);
86
- });
87
- it('expands when there is an obsEmbedding array of objects', () => {
88
- expect(expandAnndataZarr({
89
- fileType: 'anndata.zarr',
90
- url: 'http://localhost:8000/anndata.zarr',
91
- options: {
92
- obsLocations: {
93
- path: 'obsm/xy',
94
- },
95
- obsEmbedding: [
96
- {
97
- path: 'obsm/pca',
98
- dims: [2, 4],
99
- embeddingType: 'PCA',
100
- },
101
- {
102
- path: 'obsm/umap',
103
- embeddingType: 'UMAP',
104
- },
105
- ],
106
- },
107
- })).toEqual([
108
- {
109
- fileType: 'obsLocations.anndata.zarr',
110
- url: 'http://localhost:8000/anndata.zarr',
111
- options: {
112
- path: 'obsm/xy',
113
- },
114
- coordinationValues: {
115
- obsType: 'cell',
116
- },
117
- },
118
- {
119
- fileType: 'obsEmbedding.anndata.zarr',
120
- url: 'http://localhost:8000/anndata.zarr',
121
- options: {
122
- path: 'obsm/pca',
123
- dims: [2, 4],
124
- },
125
- coordinationValues: {
126
- obsType: 'cell',
127
- embeddingType: 'PCA',
128
- },
129
- },
130
- {
131
- fileType: 'obsEmbedding.anndata.zarr',
132
- url: 'http://localhost:8000/anndata.zarr',
133
- options: {
134
- path: 'obsm/umap',
135
- },
136
- coordinationValues: {
137
- obsType: 'cell',
138
- embeddingType: 'UMAP',
139
- },
140
- },
141
- ]);
142
- });
143
- });
144
- });
@@ -1,9 +0,0 @@
1
- import rasterSchema from './schemas/raster.schema';
2
- import obsSetsSchema from './schemas/obsSets.schema';
3
- import obsSetsTabularSchema from './schemas/obsSetsTabular.schema';
4
-
5
- export {
6
- rasterSchema,
7
- obsSetsSchema,
8
- obsSetsTabularSchema,
9
- };
package/src/plugins.js DELETED
@@ -1,186 +0,0 @@
1
- import { fromEntries } from '@vitessce/utils';
2
- import {
3
- FileType, CoordinationType,
4
- FILE_TYPE_DATA_TYPE_MAPPING,
5
- COMPONENT_COORDINATION_TYPES,
6
- DEFAULT_COORDINATION_VALUES,
7
- } from '@vitessce/constants-internal';
8
- import { JOINT_FILE_TYPES } from './joint-file-types';
9
-
10
- const PLUGINS_KEY = '__VITESSCE_PLUGINS__';
11
- const PLUGIN_VIEW_TYPES_KEY = 'viewTypes';
12
- const PLUGIN_COORDINATION_TYPES_KEY = 'coordinationTypes';
13
- const PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY = 'coordinationTypesPerView';
14
- const PLUGIN_FILE_TYPES_KEY = 'fileTypes';
15
- const PLUGIN_FILE_TYPE_DATA_TYPE_MAPPING_KEY = 'fileTypeDataTypeMapping';
16
- const PLUGIN_JOINT_FILE_TYPES_KEY = 'jointFileTypes';
17
-
18
- window[PLUGINS_KEY] = {};
19
- const PLUGINS = window[PLUGINS_KEY];
20
-
21
- // Reference: https://github.com/higlass/higlass-register/blob/master/src/index.js
22
- PLUGINS[PLUGIN_VIEW_TYPES_KEY] = PLUGINS[PLUGIN_VIEW_TYPES_KEY] || {};
23
- PLUGINS[PLUGIN_COORDINATION_TYPES_KEY] = PLUGINS[PLUGIN_COORDINATION_TYPES_KEY] || {};
24
- PLUGINS[PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY] = (
25
- PLUGINS[PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY] || {}
26
- );
27
- PLUGINS[PLUGIN_FILE_TYPES_KEY] = PLUGINS[PLUGIN_FILE_TYPES_KEY] || {};
28
- PLUGINS[PLUGIN_FILE_TYPE_DATA_TYPE_MAPPING_KEY] = (
29
- PLUGINS[PLUGIN_FILE_TYPE_DATA_TYPE_MAPPING_KEY] || {}
30
- );
31
- PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY] = PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY] || {};
32
-
33
- /**
34
- * Register a new coordination type.
35
- * @param {string} typeName Name for the new coordination type.
36
- * @param {*} defaultValue A default value for the coordination type.
37
- */
38
- export function registerPluginCoordinationType(typeName, defaultValue) {
39
- PLUGINS[PLUGIN_COORDINATION_TYPES_KEY][typeName] = defaultValue;
40
- }
41
-
42
- /**
43
- * Register a new view type.
44
- * @param {string} viewType A name
45
- * @param {function} viewSubscriberReactComponent A react component.
46
- * @param {string[]} coordinationTypes A list of coordination types that this view supports.
47
- */
48
- export function registerPluginViewType(viewType, viewSubscriberReactComponent, coordinationTypes) {
49
- PLUGINS[PLUGIN_VIEW_TYPES_KEY][viewType] = viewSubscriberReactComponent;
50
- // Register the supported coordination types.
51
- const pluginTypesPerView = PLUGINS[PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY];
52
- if (Array.isArray(pluginTypesPerView[viewType])) {
53
- coordinationTypes.forEach((coordinationType) => {
54
- if (!pluginTypesPerView[viewType].includes(coordinationType)) {
55
- pluginTypesPerView[viewType].push(coordinationType);
56
- }
57
- });
58
- } else {
59
- pluginTypesPerView[viewType] = coordinationTypes;
60
- }
61
- }
62
-
63
- /**
64
- * Register a new file type.
65
- * @param {string} fileTypeName Name for the new file type.
66
- * @param {string} dataTypeName Name for the data type associated with the file type.
67
- * @param {class} dataSourceClass Data source class definition.
68
- * @param {class} dataLoaderClass Data loader class definition.
69
- */
70
- export function registerPluginFileType(
71
- // eslint-disable-next-line no-unused-vars
72
- fileTypeName, dataTypeName, dataLoaderClass, dataSourceClass,
73
- ) {
74
- PLUGINS[PLUGIN_FILE_TYPES_KEY][fileTypeName] = [dataSourceClass, dataLoaderClass];
75
- PLUGINS[PLUGIN_FILE_TYPE_DATA_TYPE_MAPPING_KEY][fileTypeName] = dataTypeName;
76
- }
77
-
78
- /**
79
- * Register a new joint file type.
80
- * @param {string} fileTypeName Name for the new file type.
81
- * @param {function} expansionFunction The joint file type expansion function.
82
- * Should take in a single file definition and return an array of
83
- * file definitions with valid atomic fileType values.
84
- */
85
- export function registerPluginJointFileType(
86
- // eslint-disable-next-line no-unused-vars
87
- fileTypeName, expansionFunction,
88
- ) {
89
- PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY][fileTypeName] = expansionFunction;
90
- }
91
-
92
-
93
- // Plugin getter functions.
94
-
95
- export function getPluginViewTypes() {
96
- return Object.keys(PLUGINS[PLUGIN_VIEW_TYPES_KEY]);
97
- }
98
-
99
- export function getPluginViewType(viewType) {
100
- return PLUGINS[PLUGIN_VIEW_TYPES_KEY][viewType];
101
- }
102
-
103
- export function getPluginCoordinationTypes() {
104
- return Object.keys(PLUGINS[PLUGIN_COORDINATION_TYPES_KEY]);
105
- }
106
-
107
- export function getPluginCoordinationTypeDefaults() {
108
- return PLUGINS[PLUGIN_COORDINATION_TYPES_KEY];
109
- }
110
-
111
- export function getPluginCoordinationTypesForViewType(viewType) {
112
- if (Array.isArray(PLUGINS[PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY][viewType])) {
113
- return PLUGINS[PLUGIN_COORDINATION_TYPES_PER_VIEW_KEY][viewType];
114
- }
115
- return [];
116
- }
117
-
118
- export function getPluginFileTypes() {
119
- return Object.keys(PLUGINS[PLUGIN_FILE_TYPES_KEY]);
120
- }
121
- export function getPluginConvenienceFileTypes() {
122
- return Object.keys(PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY]);
123
- }
124
-
125
- export function getDataTypeForPluginFileType(fileType) {
126
- return PLUGINS[PLUGIN_FILE_TYPE_DATA_TYPE_MAPPING_KEY][fileType];
127
- }
128
- export function getLoaderClassesForPluginFileType(fileType) {
129
- return PLUGINS[PLUGIN_FILE_TYPES_KEY][fileType];
130
- }
131
- export function getExpansionFunctionForPluginConvenienceFileType(fileType) {
132
- return PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY][fileType];
133
- }
134
-
135
- // Getters that depend on plugins.
136
- export function getFileTypes() {
137
- return [
138
- ...Object.values(FileType),
139
- ...getPluginFileTypes(),
140
- ];
141
- }
142
-
143
- export function getCoordinationTypes() {
144
- return [
145
- ...Object.values(CoordinationType),
146
- ...getPluginCoordinationTypes(),
147
- ];
148
- }
149
-
150
- // Need to do this in a function since the plugin coordination
151
- // types are dynamic.
152
- export function getDefaultCoordinationValues() {
153
- return {
154
- ...DEFAULT_COORDINATION_VALUES,
155
- ...getPluginCoordinationTypeDefaults(),
156
- };
157
- }
158
-
159
- // Need to do this in a function since the plugin coordination
160
- // types are dynamic.
161
- export function getComponentCoordinationTypes() {
162
- return {
163
- ...COMPONENT_COORDINATION_TYPES,
164
- ...fromEntries(getPluginViewTypes().map(viewType => ([
165
- viewType,
166
- getPluginCoordinationTypesForViewType(viewType),
167
- ]))),
168
- };
169
- }
170
-
171
- export function getFileTypeDataTypeMapping() {
172
- return {
173
- ...FILE_TYPE_DATA_TYPE_MAPPING,
174
- ...fromEntries(getPluginFileTypes().map(fileType => ([
175
- fileType,
176
- getDataTypeForPluginFileType(fileType),
177
- ]))),
178
- };
179
- }
180
-
181
- export function getJointFileTypes() {
182
- return {
183
- ...JOINT_FILE_TYPES,
184
- ...PLUGINS[PLUGIN_JOINT_FILE_TYPES_KEY],
185
- };
186
- }
@@ -1,42 +0,0 @@
1
- /* eslint-disable camelcase */
2
- import {
3
- registerPluginFileType,
4
- registerPluginJointFileType,
5
- getFileTypeDataTypeMapping,
6
- getJointFileTypes,
7
- } from './plugins';
8
- import {
9
- convenienceFileDefsCollapsed,
10
- convenienceFileDefsExpanded,
11
- pluginExpandAnnDataConvenience,
12
- } from './plugins.test.fixtures';
13
- import {
14
- initialize,
15
- } from './view-config-utils';
16
-
17
- describe('src/app/plugins.js', () => {
18
- describe('getFileTypeDataTypeMapping', () => {
19
- it('returns the correct data type for built-in file types', () => {
20
- const dataType = getFileTypeDataTypeMapping()['image.raster.json'];
21
- expect(dataType).toEqual('image');
22
- });
23
- it('returns the correct data type for plugin file types', () => {
24
- registerPluginFileType('plugin-cells.json', 'cells', null, null);
25
- const dataType = getFileTypeDataTypeMapping()['plugin-cells.json'];
26
- expect(dataType).toEqual('cells');
27
- });
28
- });
29
- describe('convenience file types', () => {
30
- it('registers plugin convenience file types', () => {
31
- registerPluginJointFileType('anndata.convenience.zarr', pluginExpandAnnDataConvenience);
32
- const expansionFuncs = getJointFileTypes();
33
- expect(Object.keys(expansionFuncs).includes('anndata.convenience.zarr')).toBeTruthy();
34
- expect(typeof expansionFuncs['anndata.convenience.zarr']).toEqual('function');
35
- });
36
- it('uses plugin convenience file types in view config initialization', () => {
37
- registerPluginJointFileType('anndata.convenience.zarr', pluginExpandAnnDataConvenience);
38
- expect(initialize(convenienceFileDefsCollapsed).datasets)
39
- .toEqual(convenienceFileDefsExpanded.datasets);
40
- });
41
- });
42
- });
@@ -1,85 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://github.com/vitessce/vitessce/#dataset",
4
- "title": "Vitessce data set",
5
- "type": "object",
6
- "definitions": {
7
- "components": {
8
- "type": "array",
9
- "items": {
10
- "type": "object",
11
- "additionalProperties": false,
12
- "required": ["component", "x", "y"],
13
- "properties": {
14
- "component": { "type": "string" },
15
- "props": { "type": "object" },
16
- "x": { "type": "integer" },
17
- "y": { "type": "integer" },
18
- "w": { "type": "integer" },
19
- "h": { "type": "integer" }
20
- }
21
- }
22
- },
23
- "requestInit": {
24
- "type": "object",
25
- "additionalProperties": false,
26
- "required": [],
27
- "properties": {
28
- "method": {
29
- "type": "string"
30
- },
31
- "headers": {
32
- "type": "object"
33
- },
34
- "body": {
35
- "type": "string"
36
- },
37
- "mode": {
38
- "type": "string"
39
- },
40
- "credentials": {
41
- "type": "string"
42
- },
43
- "cache": {
44
- "type": "string"
45
- },
46
- "redirect": {
47
- "type": "string"
48
- },
49
- "referrer": {
50
- "type": "string"
51
- },
52
- "integrity": {
53
- "type": "string"
54
- }
55
- }
56
- }
57
- },
58
- "additionalProperties": false,
59
- "required": ["version", "name", "layers"],
60
- "properties": {
61
- "name": { "type": "string" },
62
- "public": { "type": "boolean" },
63
- "description": { "type": "string" },
64
- "layers": {
65
- "type": "array",
66
- "items": {
67
- "type": "object",
68
- "additionalProperties": false,
69
- "required": ["name", "type", "fileType", "url"],
70
- "properties": {
71
- "name": { "type": "string" },
72
- "type": { "type": "string" },
73
- "fileType": { "type": "string" },
74
- "url": { "type": "string" },
75
- "requestInit": { "$ref": "#/definitions/requestInit" }
76
- }
77
- }
78
- },
79
- "staticLayout": { "$ref": "#/definitions/components" },
80
- "version": {
81
- "type": "string", "enum": ["0.1.0"]
82
- }
83
- }
84
- }
85
-