@jbrowse/plugin-alignments 1.7.9 → 2.0.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 (294) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +192 -207
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +28 -3
  4. package/dist/AlignmentsFeatureDetail/index.js +48 -55
  5. package/dist/AlignmentsFeatureDetail/index.js.map +1 -0
  6. package/dist/AlignmentsTrack/index.js +24 -32
  7. package/dist/AlignmentsTrack/index.js.map +1 -0
  8. package/dist/BamAdapter/BamAdapter.js +345 -585
  9. package/dist/BamAdapter/BamAdapter.js.map +1 -0
  10. package/dist/BamAdapter/BamSlightlyLazyFeature.js +143 -174
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  12. package/dist/BamAdapter/MismatchParser.js +340 -416
  13. package/dist/BamAdapter/MismatchParser.js.map +1 -0
  14. package/dist/BamAdapter/configSchema.js +33 -46
  15. package/dist/BamAdapter/configSchema.js.map +1 -0
  16. package/dist/BamAdapter/index.js +36 -32
  17. package/dist/BamAdapter/index.js.map +1 -0
  18. package/dist/CramAdapter/CramAdapter.js +376 -644
  19. package/dist/CramAdapter/CramAdapter.js.map +1 -0
  20. package/dist/CramAdapter/CramSlightlyLazyFeature.js +374 -439
  21. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  22. package/dist/CramAdapter/CramTestAdapters.js +169 -227
  23. package/dist/CramAdapter/CramTestAdapters.js.map +1 -0
  24. package/dist/CramAdapter/configSchema.js +28 -38
  25. package/dist/CramAdapter/configSchema.js.map +1 -0
  26. package/dist/CramAdapter/index.js +37 -32
  27. package/dist/CramAdapter/index.js.map +1 -0
  28. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +91 -93
  29. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  30. package/dist/HtsgetBamAdapter/configSchema.js +19 -29
  31. package/dist/HtsgetBamAdapter/configSchema.js.map +1 -0
  32. package/dist/HtsgetBamAdapter/index.js +44 -38
  33. package/dist/HtsgetBamAdapter/index.js.map +1 -0
  34. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +36 -65
  35. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  36. package/dist/LinearAlignmentsDisplay/index.js +22 -28
  37. package/dist/LinearAlignmentsDisplay/index.js.map +1 -0
  38. package/dist/LinearAlignmentsDisplay/models/configSchema.js +12 -23
  39. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  40. package/dist/LinearAlignmentsDisplay/models/model.d.ts +10 -10
  41. package/dist/LinearAlignmentsDisplay/models/model.js +257 -245
  42. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -0
  43. package/dist/LinearPileupDisplay/components/ColorByModifications.js +98 -116
  44. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  45. package/dist/LinearPileupDisplay/components/ColorByTag.js +82 -91
  46. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  47. package/dist/LinearPileupDisplay/components/FilterByTag.js +156 -192
  48. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  49. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +15 -29
  50. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  51. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +79 -93
  52. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  53. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +78 -81
  54. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  55. package/dist/LinearPileupDisplay/components/SortByTag.js +80 -88
  56. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  57. package/dist/LinearPileupDisplay/configSchema.js +40 -42
  58. package/dist/LinearPileupDisplay/configSchema.js.map +1 -0
  59. package/dist/LinearPileupDisplay/index.js +21 -27
  60. package/dist/LinearPileupDisplay/index.js.map +1 -0
  61. package/dist/LinearPileupDisplay/model.d.ts +33 -20
  62. package/dist/LinearPileupDisplay/model.js +702 -716
  63. package/dist/LinearPileupDisplay/model.js.map +1 -0
  64. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  65. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +105 -57
  66. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  67. package/dist/LinearSNPCoverageDisplay/index.js +21 -27
  68. package/dist/LinearSNPCoverageDisplay/index.js.map +1 -0
  69. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +45 -55
  70. package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  71. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +14 -12
  72. package/dist/LinearSNPCoverageDisplay/models/model.js +257 -230
  73. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  74. package/dist/NestedFrequencyTable.js +104 -139
  75. package/dist/NestedFrequencyTable.js.map +1 -0
  76. package/dist/PileupRPC/rpcMethods.js +199 -278
  77. package/dist/PileupRPC/rpcMethods.js.map +1 -0
  78. package/dist/PileupRenderer/PileupLayoutSession.js +56 -76
  79. package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -0
  80. package/dist/PileupRenderer/PileupRenderer.d.ts +56 -11
  81. package/dist/PileupRenderer/PileupRenderer.js +942 -1134
  82. package/dist/PileupRenderer/PileupRenderer.js.map +1 -0
  83. package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -1
  84. package/dist/PileupRenderer/components/PileupRendering.js +173 -253
  85. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -0
  86. package/dist/PileupRenderer/configSchema.js +65 -71
  87. package/dist/PileupRenderer/configSchema.js.map +1 -0
  88. package/dist/PileupRenderer/index.js +17 -22
  89. package/dist/PileupRenderer/index.js.map +1 -0
  90. package/dist/PileupRenderer/sortUtil.js +83 -107
  91. package/dist/PileupRenderer/sortUtil.js.map +1 -0
  92. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +2 -0
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +436 -586
  94. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  95. package/dist/SNPCoverageAdapter/configSchema.js +10 -20
  96. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -0
  97. package/dist/SNPCoverageAdapter/index.js +46 -41
  98. package/dist/SNPCoverageAdapter/index.js.map +1 -0
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +265 -290
  101. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  102. package/dist/SNPCoverageRenderer/configSchema.js +30 -39
  103. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -0
  104. package/dist/SNPCoverageRenderer/index.js +19 -30
  105. package/dist/SNPCoverageRenderer/index.js.map +1 -0
  106. package/dist/index.js +135 -152
  107. package/dist/index.js.map +1 -0
  108. package/dist/shared.js +84 -92
  109. package/dist/shared.js.map +1 -0
  110. package/dist/util.js +130 -121
  111. package/dist/util.js.map +1 -0
  112. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -0
  113. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +145 -0
  114. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  115. package/esm/AlignmentsFeatureDetail/index.d.ts +38 -0
  116. package/esm/AlignmentsFeatureDetail/index.js +23 -0
  117. package/esm/AlignmentsFeatureDetail/index.js.map +1 -0
  118. package/esm/AlignmentsTrack/index.d.ts +2 -0
  119. package/esm/AlignmentsTrack/index.js +23 -0
  120. package/esm/AlignmentsTrack/index.js.map +1 -0
  121. package/esm/BamAdapter/BamAdapter.d.ts +40 -0
  122. package/esm/BamAdapter/BamAdapter.js +173 -0
  123. package/esm/BamAdapter/BamAdapter.js.map +1 -0
  124. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -0
  125. package/esm/BamAdapter/BamSlightlyLazyFeature.js +107 -0
  126. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  127. package/esm/BamAdapter/MismatchParser.d.ts +25 -0
  128. package/esm/BamAdapter/MismatchParser.js +294 -0
  129. package/esm/BamAdapter/MismatchParser.js.map +1 -0
  130. package/esm/BamAdapter/configSchema.d.ts +2 -0
  131. package/esm/BamAdapter/configSchema.js +31 -0
  132. package/esm/BamAdapter/configSchema.js.map +1 -0
  133. package/esm/BamAdapter/index.d.ts +3 -0
  134. package/esm/BamAdapter/index.js +10 -0
  135. package/esm/BamAdapter/index.js.map +1 -0
  136. package/esm/CramAdapter/CramAdapter.d.ts +53 -0
  137. package/esm/CramAdapter/CramAdapter.js +228 -0
  138. package/esm/CramAdapter/CramAdapter.js.map +1 -0
  139. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -0
  140. package/esm/CramAdapter/CramSlightlyLazyFeature.js +349 -0
  141. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  142. package/esm/CramAdapter/CramTestAdapters.d.ts +29 -0
  143. package/esm/CramAdapter/CramTestAdapters.js +70 -0
  144. package/esm/CramAdapter/CramTestAdapters.js.map +1 -0
  145. package/esm/CramAdapter/configSchema.d.ts +3 -0
  146. package/esm/CramAdapter/configSchema.js +26 -0
  147. package/esm/CramAdapter/configSchema.js.map +1 -0
  148. package/esm/CramAdapter/index.d.ts +3 -0
  149. package/esm/CramAdapter/index.js +11 -0
  150. package/esm/CramAdapter/index.js.map +1 -0
  151. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -0
  152. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +27 -0
  153. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  154. package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -0
  155. package/esm/HtsgetBamAdapter/configSchema.js +17 -0
  156. package/esm/HtsgetBamAdapter/configSchema.js.map +1 -0
  157. package/esm/HtsgetBamAdapter/index.d.ts +3 -0
  158. package/esm/HtsgetBamAdapter/index.js +16 -0
  159. package/esm/HtsgetBamAdapter/index.js.map +1 -0
  160. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -0
  161. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +34 -0
  162. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  163. package/esm/LinearAlignmentsDisplay/index.d.ts +2 -0
  164. package/esm/LinearAlignmentsDisplay/index.js +19 -0
  165. package/esm/LinearAlignmentsDisplay/index.js.map +1 -0
  166. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -0
  167. package/esm/LinearAlignmentsDisplay/models/configSchema.js +12 -0
  168. package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  169. package/esm/LinearAlignmentsDisplay/models/model.d.ts +105 -0
  170. package/esm/LinearAlignmentsDisplay/models/model.js +181 -0
  171. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -0
  172. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -0
  173. package/esm/LinearPileupDisplay/components/ColorByModifications.js +71 -0
  174. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  175. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +9 -0
  176. package/esm/LinearPileupDisplay/components/ColorByTag.js +45 -0
  177. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  178. package/esm/LinearPileupDisplay/components/FilterByTag.d.ts +18 -0
  179. package/esm/LinearPileupDisplay/components/FilterByTag.js +123 -0
  180. package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  181. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -0
  182. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +13 -0
  183. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  184. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -0
  185. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +41 -0
  186. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  187. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -0
  188. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +43 -0
  189. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  190. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +9 -0
  191. package/esm/LinearPileupDisplay/components/SortByTag.js +43 -0
  192. package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  193. package/esm/LinearPileupDisplay/configSchema.d.ts +6 -0
  194. package/esm/LinearPileupDisplay/configSchema.js +41 -0
  195. package/esm/LinearPileupDisplay/configSchema.js.map +1 -0
  196. package/esm/LinearPileupDisplay/index.d.ts +2 -0
  197. package/esm/LinearPileupDisplay/index.js +18 -0
  198. package/esm/LinearPileupDisplay/index.js.map +1 -0
  199. package/esm/LinearPileupDisplay/model.d.ts +332 -0
  200. package/esm/LinearPileupDisplay/model.js +576 -0
  201. package/esm/LinearPileupDisplay/model.js.map +1 -0
  202. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -0
  203. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +57 -0
  204. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  205. package/esm/LinearSNPCoverageDisplay/index.d.ts +2 -0
  206. package/esm/LinearSNPCoverageDisplay/index.js +18 -0
  207. package/esm/LinearSNPCoverageDisplay/index.js.map +1 -0
  208. package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -0
  209. package/esm/LinearSNPCoverageDisplay/models/configSchema.js +44 -0
  210. package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  211. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +348 -0
  212. package/esm/LinearSNPCoverageDisplay/models/model.js +185 -0
  213. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  214. package/esm/NestedFrequencyTable.d.ts +14 -0
  215. package/esm/NestedFrequencyTable.js +101 -0
  216. package/esm/NestedFrequencyTable.js.map +1 -0
  217. package/esm/PileupRPC/rpcMethods.d.ts +34 -0
  218. package/esm/PileupRPC/rpcMethods.js +70 -0
  219. package/esm/PileupRPC/rpcMethods.js.map +1 -0
  220. package/esm/PileupRenderer/PileupLayoutSession.d.ts +32 -0
  221. package/esm/PileupRenderer/PileupLayoutSession.js +32 -0
  222. package/esm/PileupRenderer/PileupLayoutSession.js.map +1 -0
  223. package/esm/PileupRenderer/PileupRenderer.d.ts +182 -0
  224. package/esm/PileupRenderer/PileupRenderer.js +830 -0
  225. package/esm/PileupRenderer/PileupRenderer.js.map +1 -0
  226. package/esm/PileupRenderer/components/PileupRendering.d.ts +23 -0
  227. package/esm/PileupRenderer/components/PileupRendering.js +138 -0
  228. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -0
  229. package/esm/PileupRenderer/configSchema.d.ts +2 -0
  230. package/esm/PileupRenderer/configSchema.js +64 -0
  231. package/esm/PileupRenderer/configSchema.js.map +1 -0
  232. package/esm/PileupRenderer/index.d.ts +2 -0
  233. package/esm/PileupRenderer/index.js +12 -0
  234. package/esm/PileupRenderer/index.js.map +1 -0
  235. package/esm/PileupRenderer/sortUtil.d.ts +8 -0
  236. package/esm/PileupRenderer/sortUtil.js +80 -0
  237. package/esm/PileupRenderer/sortUtil.js.map +1 -0
  238. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -0
  239. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +259 -0
  240. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  241. package/esm/SNPCoverageAdapter/configSchema.d.ts +3 -0
  242. package/esm/SNPCoverageAdapter/configSchema.js +6 -0
  243. package/esm/SNPCoverageAdapter/configSchema.js.map +1 -0
  244. package/esm/SNPCoverageAdapter/index.d.ts +3 -0
  245. package/esm/SNPCoverageAdapter/index.js +18 -0
  246. package/esm/SNPCoverageAdapter/index.js.map +1 -0
  247. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -0
  248. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +185 -0
  249. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  250. package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -0
  251. package/esm/SNPCoverageRenderer/configSchema.js +29 -0
  252. package/esm/SNPCoverageRenderer/configSchema.js.map +1 -0
  253. package/esm/SNPCoverageRenderer/index.d.ts +3 -0
  254. package/esm/SNPCoverageRenderer/index.js +14 -0
  255. package/esm/SNPCoverageRenderer/index.js.map +1 -0
  256. package/esm/index.d.ts +10 -0
  257. package/esm/index.js +91 -0
  258. package/esm/index.js.map +1 -0
  259. package/esm/shared.d.ts +25 -0
  260. package/esm/shared.js +28 -0
  261. package/esm/shared.js.map +1 -0
  262. package/esm/util.d.ts +19 -0
  263. package/esm/util.js +83 -0
  264. package/esm/util.js.map +1 -0
  265. package/package.json +19 -11
  266. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +16 -6
  267. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +321 -397
  268. package/src/AlignmentsFeatureDetail/index.ts +7 -17
  269. package/src/BamAdapter/MismatchParser.ts +1 -0
  270. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -3
  271. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +7 -7
  272. package/src/LinearPileupDisplay/components/ColorByTag.tsx +5 -5
  273. package/src/LinearPileupDisplay/components/FilterByTag.tsx +5 -5
  274. package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +1 -1
  275. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +9 -9
  276. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +5 -5
  277. package/src/LinearPileupDisplay/components/SortByTag.tsx +5 -5
  278. package/src/LinearPileupDisplay/model.ts +90 -32
  279. package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +44 -30
  280. package/src/LinearSNPCoverageDisplay/models/model.ts +25 -25
  281. package/src/PileupRenderer/PileupRenderer.tsx +399 -198
  282. package/src/PileupRenderer/components/PileupRendering.tsx +11 -11
  283. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -0
  284. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +7 -5
  285. package/dist/AlignmentsFeatureDetail/index.test.js +0 -60
  286. package/dist/BamAdapter/BamAdapter.test.js +0 -177
  287. package/dist/BamAdapter/MismatchParser.test.js +0 -251
  288. package/dist/CramAdapter/CramAdapter.test.js +0 -138
  289. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +0 -83
  290. package/dist/LinearPileupDisplay/configSchema.test.js +0 -92
  291. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +0 -62
  292. package/dist/PileupRenderer/components/PileupRendering.test.js +0 -36
  293. package/dist/declare.d.js +0 -1
  294. package/dist/index.test.js +0 -26
@@ -0,0 +1,101 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ // see perf results on object.keys vs for-in loop
3
+ // https://jsperf.com/object-keys-vs-hasownproperty/55
4
+ export default class NestedFrequencyTable {
5
+ constructor(initialData = {}) {
6
+ this.categories = { ...initialData };
7
+ }
8
+ // get the sum of all the category counts
9
+ total() {
10
+ // calculate total if necessary
11
+ let t = 0;
12
+ for (const k in this.categories) {
13
+ const v = this.categories[k];
14
+ t += v.total ? v.total() : v;
15
+ }
16
+ return t;
17
+ }
18
+ // decrement the count for the given category
19
+ decrement(slotName, amount) {
20
+ if (!amount) {
21
+ amount = 1;
22
+ }
23
+ if (!slotName) {
24
+ slotName = 'default';
25
+ }
26
+ else {
27
+ slotName = slotName.toString();
28
+ }
29
+ if (this.categories[slotName]) {
30
+ this.categories[slotName] = Math.max(0, this.categories[slotName] - amount);
31
+ return this.categories[slotName];
32
+ }
33
+ return 0;
34
+ }
35
+ // increment the count for the given category
36
+ increment(slotName, amount) {
37
+ if (!amount) {
38
+ amount = 1;
39
+ }
40
+ if (!slotName) {
41
+ slotName = 'default';
42
+ }
43
+ else {
44
+ slotName = slotName.toString();
45
+ }
46
+ this.categories[slotName] = (this.categories[slotName] || 0) + amount;
47
+ return this.categories[slotName];
48
+ }
49
+ // get the value of the given category. may be a number or a
50
+ // frequency table.
51
+ get(slotName) {
52
+ return this.categories[slotName] || 0;
53
+ }
54
+ // get a given category as a frequency table
55
+ getNested(path) {
56
+ if (typeof path === 'string') {
57
+ path = path.split('/');
58
+ }
59
+ if (!path.length) {
60
+ return this;
61
+ }
62
+ const slotName = path[0].toString();
63
+ let slot = this.categories[slotName];
64
+ if (!slot || !slot.categories) {
65
+ this.categories[slotName] = new NestedFrequencyTable(slot ? { default: slot + 0 } : {});
66
+ }
67
+ slot = this.categories[slotName];
68
+ if (path.length > 1) {
69
+ return slot.getNested(path.slice(1));
70
+ }
71
+ return slot;
72
+ }
73
+ toString() {
74
+ return this.total()
75
+ .toPrecision(6)
76
+ .toString()
77
+ .replace(/\.?0+$/, '');
78
+ }
79
+ valueOf() {
80
+ return this.total();
81
+ }
82
+ // iterate through the categories and counts, call like:
83
+ //
84
+ // tbl.forEach( function( count, categoryName ) {
85
+ // // do something
86
+ // }, this );
87
+ //
88
+ forEach(func, ctx) {
89
+ if (ctx) {
90
+ for (const slotName in this.categories) {
91
+ func.call(ctx, this.categories[slotName], slotName);
92
+ }
93
+ }
94
+ else {
95
+ for (const slotName in this.categories) {
96
+ func(this.categories[slotName], slotName);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ //# sourceMappingURL=NestedFrequencyTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NestedFrequencyTable.js","sourceRoot":"","sources":["../src/NestedFrequencyTable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType';
2
+ import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods';
3
+ import { Region } from '@jbrowse/core/util/types';
4
+ import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals';
5
+ export declare class PileupGetGlobalValueForTag extends RpcMethodType {
6
+ name: string;
7
+ serializeArguments(args: RenderArgs & {
8
+ signal?: AbortSignal;
9
+ statusCallback?: Function;
10
+ }, rpcDriverClassName: string): Promise<{}>;
11
+ execute(args: {
12
+ adapterConfig: {};
13
+ signal?: RemoteAbortSignal;
14
+ headers?: Record<string, string>;
15
+ regions: Region[];
16
+ sessionId: string;
17
+ tag: string;
18
+ }, rpcDriverClassName: string): Promise<string[]>;
19
+ }
20
+ export declare class PileupGetVisibleModifications extends RpcMethodType {
21
+ name: string;
22
+ serializeArguments(args: RenderArgs & {
23
+ signal?: AbortSignal;
24
+ statusCallback?: Function;
25
+ }, rpcDriverClassName: string): Promise<{}>;
26
+ execute(args: {
27
+ adapterConfig: {};
28
+ signal?: RemoteAbortSignal;
29
+ headers?: Record<string, string>;
30
+ regions: Region[];
31
+ sessionId: string;
32
+ tag: string;
33
+ }, rpcDriverClassName: string): Promise<string[]>;
34
+ }
@@ -0,0 +1,70 @@
1
+ import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
2
+ import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType';
3
+ import { renameRegionsIfNeeded } from '@jbrowse/core/util';
4
+ import { toArray } from 'rxjs/operators';
5
+ import { getTagAlt } from '../util';
6
+ import { getModificationTypes } from '../BamAdapter/MismatchParser';
7
+ export class PileupGetGlobalValueForTag extends RpcMethodType {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.name = 'PileupGetGlobalValueForTag';
11
+ }
12
+ async serializeArguments(args, rpcDriverClassName) {
13
+ var _a;
14
+ const { rootModel } = this.pluginManager;
15
+ const assemblyManager = (_a = rootModel === null || rootModel === void 0 ? void 0 : rootModel.session) === null || _a === void 0 ? void 0 : _a.assemblyManager;
16
+ if (!assemblyManager) {
17
+ throw new Error('no assembly manager available');
18
+ }
19
+ const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args);
20
+ return super.serializeArguments(renamedArgs, rpcDriverClassName);
21
+ }
22
+ async execute(args, rpcDriverClassName) {
23
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriverClassName);
24
+ const { adapterConfig, sessionId, regions, tag } = deserializedArgs;
25
+ const dataAdapter = (await getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter;
26
+ const features = dataAdapter.getFeaturesInMultipleRegions(regions);
27
+ const featuresArray = await features.pipe(toArray()).toPromise();
28
+ const uniqueValues = new Set();
29
+ featuresArray.forEach(feature => {
30
+ const tags = feature.get('tags');
31
+ const val = tags ? tags[tag] : feature.get(tag);
32
+ if (val !== undefined) {
33
+ uniqueValues.add(`${val}`);
34
+ }
35
+ });
36
+ return [...uniqueValues];
37
+ }
38
+ }
39
+ export class PileupGetVisibleModifications extends RpcMethodType {
40
+ constructor() {
41
+ super(...arguments);
42
+ this.name = 'PileupGetVisibleModifications';
43
+ }
44
+ async serializeArguments(args, rpcDriverClassName) {
45
+ var _a;
46
+ const { rootModel } = this.pluginManager;
47
+ const assemblyManager = (_a = rootModel === null || rootModel === void 0 ? void 0 : rootModel.session) === null || _a === void 0 ? void 0 : _a.assemblyManager;
48
+ if (!assemblyManager) {
49
+ throw new Error('no assembly manager available');
50
+ }
51
+ const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args);
52
+ return super.serializeArguments(renamedArgs, rpcDriverClassName);
53
+ }
54
+ async execute(args, rpcDriverClassName) {
55
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriverClassName);
56
+ const { adapterConfig, sessionId, regions } = deserializedArgs;
57
+ const dataAdapter = (await getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter;
58
+ const features = dataAdapter.getFeaturesInMultipleRegions(regions);
59
+ const featuresArray = await features.pipe(toArray()).toPromise();
60
+ const uniqueValues = new Set();
61
+ featuresArray.forEach(feature => {
62
+ const val = getTagAlt(feature, 'MM', 'Mm') || '';
63
+ if (val !== undefined) {
64
+ getModificationTypes(val).forEach(t => uniqueValues.add(t));
65
+ }
66
+ });
67
+ return [...uniqueValues];
68
+ }
69
+ }
70
+ //# sourceMappingURL=rpcMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcMethods.js","sourceRoot":"","sources":["../../src/PileupRPC/rpcMethods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { LayoutSession } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
2
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
3
+ import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain';
4
+ import GranularRectLayout from '@jbrowse/core/util/layouts/GranularRectLayout';
5
+ import MultiLayout from '@jbrowse/core/util/layouts/MultiLayout';
6
+ export interface PileupLayoutSessionProps {
7
+ config: AnyConfigurationModel;
8
+ bpPerPx: number;
9
+ filters: SerializableFilterChain;
10
+ filterBy: unknown;
11
+ sortedBy: unknown;
12
+ showSoftClip: unknown;
13
+ }
14
+ declare type MyMultiLayout = MultiLayout<GranularRectLayout<unknown>, unknown>;
15
+ interface CachedPileupLayout {
16
+ layout: MyMultiLayout;
17
+ config: AnyConfigurationModel;
18
+ filters: SerializableFilterChain;
19
+ filterBy: unknown;
20
+ sortedBy: unknown;
21
+ showSoftClip: boolean;
22
+ }
23
+ export declare class PileupLayoutSession extends LayoutSession {
24
+ sortedBy: unknown;
25
+ filterBy: unknown;
26
+ showSoftClip: boolean;
27
+ constructor(args: PileupLayoutSessionProps);
28
+ cachedLayoutIsValid(cachedLayout: CachedPileupLayout): boolean;
29
+ cachedLayout: CachedPileupLayout | undefined;
30
+ get layout(): MyMultiLayout;
31
+ }
32
+ export {};
@@ -0,0 +1,32 @@
1
+ import deepEqual from 'fast-deep-equal';
2
+ import { LayoutSession } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
3
+ import { readConfObject } from '@jbrowse/core/configuration';
4
+ // Sorting and revealing soft clip changes the layout of Pileup renderer
5
+ // Adds extra conditions to see if cached layout is valid
6
+ export class PileupLayoutSession extends LayoutSession {
7
+ constructor(args) {
8
+ super(args);
9
+ this.showSoftClip = false;
10
+ this.config = args.config;
11
+ }
12
+ cachedLayoutIsValid(cachedLayout) {
13
+ return (super.cachedLayoutIsValid(cachedLayout) &&
14
+ this.showSoftClip === cachedLayout.showSoftClip &&
15
+ deepEqual(this.sortedBy, cachedLayout.sortedBy) &&
16
+ deepEqual(this.filterBy, cachedLayout.filterBy));
17
+ }
18
+ get layout() {
19
+ if (!this.cachedLayout || !this.cachedLayoutIsValid(this.cachedLayout)) {
20
+ this.cachedLayout = {
21
+ layout: this.makeLayout(),
22
+ config: readConfObject(this.config),
23
+ filters: this.filters,
24
+ filterBy: this.filterBy,
25
+ sortedBy: this.sortedBy,
26
+ showSoftClip: this.showSoftClip,
27
+ };
28
+ }
29
+ return this.cachedLayout.layout;
30
+ }
31
+ }
32
+ //# sourceMappingURL=PileupLayoutSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PileupLayoutSession.js","sourceRoot":"","sources":["../../src/PileupRenderer/PileupLayoutSession.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,+DAA+D,CAAA;AAK7F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAoB5D,wEAAwE;AACxE,yDAAyD;AACzD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAMpD,YAAY,IAA8B;QACxC,KAAK,CAAC,IAAI,CAAC,CAAA;QAHb,iBAAY,GAAG,KAAK,CAAA;QAIlB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,mBAAmB,CAAC,YAAgC;QAClD,OAAO,CACL,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,YAAY;YAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAChD,CAAA;IACH,CAAC;IAID,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACtE,IAAI,CAAC,YAAY,GAAG;gBAClB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;gBACzB,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAA;SACF;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACjC,CAAC;CACF"}
@@ -0,0 +1,182 @@
1
+ /// <reference types="react" />
2
+ import { Theme } from '@mui/material/styles';
3
+ import BoxRendererType, { RenderArgs, RenderArgsSerialized, RenderArgsDeserialized as BoxRenderArgsDeserialized, RenderResults, ResultsSerialized, ResultsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
4
+ import { Region, Feature } from '@jbrowse/core/util';
5
+ import { BaseLayout } from '@jbrowse/core/util/layouts/BaseLayout';
6
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
7
+ import { PileupLayoutSession, PileupLayoutSessionProps } from './PileupLayoutSession';
8
+ export interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {
9
+ colorBy?: {
10
+ type: string;
11
+ tag?: string;
12
+ };
13
+ colorTagMap?: Record<string, string>;
14
+ modificationTagMap?: Record<string, string>;
15
+ sortedBy?: {
16
+ type: string;
17
+ pos: number;
18
+ refName: string;
19
+ assemblyName: string;
20
+ tag?: string;
21
+ };
22
+ showSoftClip: boolean;
23
+ highResolutionScaling: number;
24
+ }
25
+ export interface RenderArgsDeserializedWithFeaturesAndLayout extends RenderArgsDeserialized {
26
+ features: Map<string, Feature>;
27
+ layout: BaseLayout<Feature>;
28
+ regionSequence?: string;
29
+ }
30
+ interface LayoutRecord {
31
+ feature: Feature;
32
+ leftPx: number;
33
+ rightPx: number;
34
+ topPx: number;
35
+ heightPx: number;
36
+ }
37
+ interface LayoutFeature {
38
+ heightPx: number;
39
+ topPx: number;
40
+ feature: Feature;
41
+ }
42
+ export default class PileupRenderer extends BoxRendererType {
43
+ supportsSVG: boolean;
44
+ getCharWidthHeight(ctx: CanvasRenderingContext2D): {
45
+ charWidth: number;
46
+ charHeight: number;
47
+ };
48
+ layoutFeature({ feature, layout, bpPerPx, region, showSoftClip, heightPx, displayMode, }: {
49
+ feature: Feature;
50
+ layout: BaseLayout<Feature>;
51
+ bpPerPx: number;
52
+ region: Region;
53
+ showSoftClip?: boolean;
54
+ heightPx: number;
55
+ displayMode: string;
56
+ }): LayoutRecord | null;
57
+ getExpandedRegion(region: Region, renderArgs: RenderArgsDeserialized): {
58
+ start: number;
59
+ end: number;
60
+ reversed?: boolean | undefined;
61
+ refName: string;
62
+ assemblyName: string;
63
+ };
64
+ colorByOrientation(feature: Feature, config: AnyConfigurationModel): string;
65
+ getOrientation(feature: Feature, config: AnyConfigurationModel): string;
66
+ colorByInsertSize(feature: Feature, _config: AnyConfigurationModel): string;
67
+ colorByStranded(feature: Feature, _config: AnyConfigurationModel): "color_rev_strand" | "color_fwd_strand" | "color_rev_missing_mate" | "color_fwd_missing_mate" | "color_rev_strand_not_proper" | "color_fwd_strand_not_proper" | "color_fwd_diff_chr" | "color_rev_diff_chr";
68
+ colorByPerBaseLettering({ ctx, feat, region, bpPerPx, colorForBase, contrastForBase, charWidth, charHeight, canvasWidth, }: {
69
+ ctx: CanvasRenderingContext2D;
70
+ feat: LayoutFeature;
71
+ region: Region;
72
+ bpPerPx: number;
73
+ colorForBase: Record<string, string>;
74
+ contrastForBase: Record<string, string>;
75
+ charWidth: number;
76
+ charHeight: number;
77
+ canvasWidth: number;
78
+ }): void;
79
+ colorByPerBaseQuality({ ctx, feat, region, bpPerPx, canvasWidth, }: {
80
+ ctx: CanvasRenderingContext2D;
81
+ feat: LayoutFeature;
82
+ region: Region;
83
+ bpPerPx: number;
84
+ canvasWidth: number;
85
+ }): void;
86
+ colorByModifications({ ctx, feat, region, bpPerPx, renderArgs, canvasWidth, }: {
87
+ ctx: CanvasRenderingContext2D;
88
+ feat: LayoutFeature;
89
+ region: Region;
90
+ bpPerPx: number;
91
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
92
+ canvasWidth: number;
93
+ }): void;
94
+ colorByMethylation({ ctx, feat, region, bpPerPx, renderArgs, canvasWidth, }: {
95
+ ctx: CanvasRenderingContext2D;
96
+ feat: LayoutFeature;
97
+ region: Region;
98
+ bpPerPx: number;
99
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
100
+ canvasWidth: number;
101
+ }): void;
102
+ drawRect(ctx: CanvasRenderingContext2D, feat: LayoutFeature, props: RenderArgsDeserialized): void;
103
+ drawAlignmentRect({ ctx, feat, renderArgs, colorForBase, contrastForBase, charWidth, charHeight, defaultColor, canvasWidth, }: {
104
+ ctx: CanvasRenderingContext2D;
105
+ feat: LayoutFeature;
106
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
107
+ colorForBase: Record<string, string>;
108
+ contrastForBase: Record<string, string>;
109
+ charWidth: number;
110
+ charHeight: number;
111
+ defaultColor: boolean;
112
+ canvasWidth: number;
113
+ }): void;
114
+ drawMismatches({ ctx, feat, renderArgs, minSubfeatureWidth, largeInsertionIndicatorScale, mismatchAlpha, charWidth, charHeight, colorForBase, contrastForBase, canvasWidth, drawSNPsMuted, drawIndels, }: {
115
+ ctx: CanvasRenderingContext2D;
116
+ feat: LayoutFeature;
117
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
118
+ colorForBase: {
119
+ [key: string]: string;
120
+ };
121
+ contrastForBase: {
122
+ [key: string]: string;
123
+ };
124
+ mismatchAlpha?: boolean;
125
+ drawIndels?: boolean;
126
+ drawSNPsMuted?: boolean;
127
+ minSubfeatureWidth: number;
128
+ largeInsertionIndicatorScale: number;
129
+ charWidth: number;
130
+ charHeight: number;
131
+ canvasWidth: number;
132
+ }): void;
133
+ drawSoftClipping({ ctx, feat, renderArgs, config, theme, canvasWidth, }: {
134
+ ctx: CanvasRenderingContext2D;
135
+ feat: LayoutFeature;
136
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
137
+ config: AnyConfigurationModel;
138
+ theme: Theme;
139
+ canvasWidth: number;
140
+ }): void;
141
+ makeImageData({ ctx, layoutRecords, canvasWidth, renderArgs, }: {
142
+ ctx: CanvasRenderingContext2D;
143
+ canvasWidth: number;
144
+ layoutRecords: (LayoutFeature | null)[];
145
+ renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
146
+ }): void;
147
+ layoutFeats(props: RenderArgsDeserializedWithFeaturesAndLayout): (LayoutRecord | null)[];
148
+ fetchSequence(renderProps: RenderArgsDeserialized): Promise<any>;
149
+ render(renderProps: RenderArgsDeserialized): Promise<{
150
+ features: Map<any, any>;
151
+ layout: import("@jbrowse/core/util/layouts").GranularRectLayout<unknown>;
152
+ height: number;
153
+ width: number;
154
+ maxHeightReached: boolean;
155
+ canvasRecordedData: any;
156
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
157
+ imageData?: undefined;
158
+ html?: string | undefined;
159
+ } | {
160
+ features: Map<any, any>;
161
+ layout: import("@jbrowse/core/util/layouts").GranularRectLayout<unknown>;
162
+ height: number;
163
+ width: number;
164
+ maxHeightReached: boolean;
165
+ reactElement: JSX.Element;
166
+ canvasRecordedData?: undefined;
167
+ imageData?: undefined;
168
+ html?: string | undefined;
169
+ } | {
170
+ features: Map<any, any>;
171
+ layout: import("@jbrowse/core/util/layouts").GranularRectLayout<unknown>;
172
+ height: number;
173
+ width: number;
174
+ maxHeightReached: boolean;
175
+ imageData: any;
176
+ canvasRecordedData?: undefined;
177
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
178
+ html?: string | undefined;
179
+ }>;
180
+ createSession(args: PileupLayoutSessionProps): PileupLayoutSession;
181
+ }
182
+ export type { RenderArgs, RenderArgsSerialized, RenderResults, ResultsSerialized, ResultsDeserialized, };