@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,259 @@
1
+ import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import SimpleFeature from '@jbrowse/core/util/simpleFeature';
3
+ import { ObservableCreate } from '@jbrowse/core/util/rxjs';
4
+ import { toArray } from 'rxjs/operators';
5
+ import { getTag, getTagAlt, fetchSequence, shouldFetchReferenceSequence, } from '../util';
6
+ import { parseCigar, getNextRefPos, getModificationPositions, } from '../BamAdapter/MismatchParser';
7
+ function mismatchLen(mismatch) {
8
+ return !isInterbase(mismatch.type) ? mismatch.length : 1;
9
+ }
10
+ function isInterbase(type) {
11
+ return type === 'softclip' || type === 'hardclip' || type === 'insertion';
12
+ }
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ function inc(bin, strand, type, field) {
15
+ let thisBin = bin[type][field];
16
+ if (thisBin === undefined) {
17
+ thisBin = bin[type][field] = {
18
+ total: 0,
19
+ '-1': 0,
20
+ '0': 0,
21
+ '1': 0,
22
+ };
23
+ }
24
+ thisBin.total++;
25
+ thisBin[strand]++;
26
+ }
27
+ export default class SNPCoverageAdapter extends BaseFeatureDataAdapter {
28
+ async configure() {
29
+ var _a, _b;
30
+ const subadapterConfig = this.getConf('subadapter');
31
+ const sequenceConf = this.getConf(['subadapter', 'sequenceAdapter']);
32
+ const dataAdapter = await ((_a = this.getSubAdapter) === null || _a === void 0 ? void 0 : _a.call(this, subadapterConfig));
33
+ const sequenceAdapter = sequenceConf
34
+ ? await ((_b = this.getSubAdapter) === null || _b === void 0 ? void 0 : _b.call(this, sequenceConf))
35
+ : undefined;
36
+ if (!dataAdapter) {
37
+ throw new Error('Failed to get subadapter');
38
+ }
39
+ return {
40
+ subadapter: dataAdapter.dataAdapter,
41
+ sequenceAdapter: sequenceAdapter === null || sequenceAdapter === void 0 ? void 0 : sequenceAdapter.dataAdapter,
42
+ };
43
+ }
44
+ async fetchSequence(region) {
45
+ const { sequenceAdapter } = await this.configure();
46
+ if (!sequenceAdapter) {
47
+ return undefined;
48
+ }
49
+ return fetchSequence(region, sequenceAdapter);
50
+ }
51
+ getFeatures(region, opts = {}) {
52
+ return ObservableCreate(async (observer) => {
53
+ const { subadapter } = await this.configure();
54
+ const feats = await subadapter
55
+ .getFeatures(region, opts)
56
+ .pipe(toArray())
57
+ .toPromise();
58
+ const { bins, skipmap } = await this.generateCoverageBins(feats, region, opts);
59
+ bins.forEach((bin, index) => {
60
+ observer.next(new SimpleFeature({
61
+ id: `${this.id}-${region.start + index}`,
62
+ data: {
63
+ score: bin.total,
64
+ snpinfo: bin,
65
+ start: region.start + index,
66
+ end: region.start + index + 1,
67
+ refName: region.refName,
68
+ },
69
+ }));
70
+ });
71
+ // make fake features from the coverage
72
+ Object.entries(skipmap).forEach(([key, skip]) => {
73
+ observer.next(new SimpleFeature({
74
+ id: key,
75
+ data: {
76
+ type: 'skip',
77
+ start: skip.start,
78
+ end: skip.end,
79
+ strand: skip.strand,
80
+ score: skip.score,
81
+ xs: skip.xs,
82
+ },
83
+ }));
84
+ });
85
+ observer.complete();
86
+ }, opts.signal);
87
+ }
88
+ async estimateRegionsStats(regions, opts) {
89
+ const { subadapter } = await this.configure();
90
+ return subadapter.estimateRegionsStats(regions, opts);
91
+ }
92
+ async getRefNames(opts = {}) {
93
+ const { subadapter } = await this.configure();
94
+ return subadapter.getRefNames(opts);
95
+ }
96
+ freeResources( /* { region } */) { }
97
+ async generateCoverageBins(features, region, opts) {
98
+ var _a;
99
+ const { colorBy } = opts;
100
+ const binMax = Math.ceil(region.end - region.start);
101
+ const skipmap = {};
102
+ const regionSeq = features.length && shouldFetchReferenceSequence((_a = opts.colorBy) === null || _a === void 0 ? void 0 : _a.type)
103
+ ? await this.fetchSequence(region)
104
+ : undefined;
105
+ const bins = [];
106
+ for (let i = 0; i < features.length; i++) {
107
+ const feature = features[i];
108
+ const fstart = feature.get('start');
109
+ const fend = feature.get('end');
110
+ const fstrand = feature.get('strand');
111
+ for (let j = fstart; j < fend + 1; j++) {
112
+ const i = j - region.start;
113
+ if (i >= 0 && i < binMax) {
114
+ if (bins[i] === undefined) {
115
+ bins[i] = {
116
+ total: 0,
117
+ all: 0,
118
+ ref: 0,
119
+ '-1': 0,
120
+ '0': 0,
121
+ '1': 0,
122
+ lowqual: {},
123
+ cov: {},
124
+ delskips: {},
125
+ noncov: {},
126
+ };
127
+ }
128
+ if (j !== fend) {
129
+ bins[i].total++;
130
+ bins[i].all++;
131
+ bins[i].ref++;
132
+ bins[i][fstrand]++;
133
+ }
134
+ }
135
+ }
136
+ if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications') {
137
+ const seq = feature.get('seq');
138
+ const mm = getTagAlt(feature, 'MM', 'Mm') || '';
139
+ const ops = parseCigar(feature.get('CIGAR'));
140
+ const fend = feature.get('end');
141
+ getModificationPositions(mm, seq, fstrand).forEach(({ type, positions }) => {
142
+ const mod = `mod_${type}`;
143
+ for (const pos of getNextRefPos(ops, positions)) {
144
+ const epos = pos + fstart - region.start;
145
+ if (epos >= 0 && epos < bins.length && pos + fstart < fend) {
146
+ const bin = bins[epos];
147
+ if (bin) {
148
+ inc(bin, fstrand, 'cov', mod);
149
+ }
150
+ else {
151
+ console.warn('Undefined position in modifications snpcoverage encountered');
152
+ }
153
+ }
154
+ }
155
+ });
156
+ }
157
+ // methylation based coloring takes into account both reference
158
+ // sequence CpG detection and reads
159
+ else if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'methylation') {
160
+ if (!regionSeq) {
161
+ throw new Error('no region sequence detected, need sequenceAdapter configuration');
162
+ }
163
+ const seq = feature.get('seq');
164
+ const mm = getTagAlt(feature, 'MM', 'Mm') || '';
165
+ const methBins = new Array(region.end - region.start).fill(0);
166
+ const ops = parseCigar(feature.get('CIGAR'));
167
+ getModificationPositions(mm, seq, fstrand).forEach(({ type, positions }) => {
168
+ // we are processing methylation
169
+ if (type === 'm') {
170
+ for (const pos of getNextRefPos(ops, positions)) {
171
+ const epos = pos + fstart - region.start;
172
+ if (epos >= 0 && epos < methBins.length) {
173
+ methBins[epos] = 1;
174
+ }
175
+ }
176
+ }
177
+ });
178
+ for (let j = fstart; j < fend; j++) {
179
+ const i = j - region.start;
180
+ if (i >= 0 && i < bins.length - 1) {
181
+ const l1 = regionSeq[i].toLowerCase();
182
+ const l2 = regionSeq[i + 1].toLowerCase();
183
+ const bin = bins[i];
184
+ const bin1 = bins[i + 1];
185
+ // color
186
+ if (l1 === 'c' && l2 === 'g') {
187
+ if (methBins[i] || methBins[i + 1]) {
188
+ inc(bin, fstrand, 'cov', 'meth');
189
+ inc(bin1, fstrand, 'cov', 'meth');
190
+ bins[i].ref--;
191
+ bins[i][fstrand]--;
192
+ bins[i + 1].ref--;
193
+ bins[i + 1][fstrand]--;
194
+ }
195
+ else {
196
+ inc(bin, fstrand, 'cov', 'unmeth');
197
+ inc(bin1, fstrand, 'cov', 'unmeth');
198
+ bins[i].ref--;
199
+ bins[i][fstrand]--;
200
+ bins[i + 1].ref--;
201
+ bins[i + 1][fstrand]--;
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ // normal SNP based coloring
208
+ const mismatches = feature.get('mismatches') || [];
209
+ const colorSNPs = (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) !== 'modifications' && (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) !== 'methylation';
210
+ for (let i = 0; i < mismatches.length; i++) {
211
+ const mismatch = mismatches[i];
212
+ const mstart = fstart + mismatch.start;
213
+ const mlen = mismatchLen(mismatch);
214
+ const mend = mstart + mlen;
215
+ for (let j = mstart; j < mstart + mlen; j++) {
216
+ const epos = j - region.start;
217
+ if (epos >= 0 && epos < bins.length) {
218
+ const bin = bins[epos];
219
+ const { base, type } = mismatch;
220
+ const interbase = isInterbase(type);
221
+ if (!interbase) {
222
+ bin.ref--;
223
+ bin[fstrand]--;
224
+ }
225
+ else {
226
+ inc(bin, fstrand, 'noncov', type);
227
+ }
228
+ if (type === 'deletion' || type === 'skip') {
229
+ inc(bin, fstrand, 'delskips', type);
230
+ bin.total--;
231
+ }
232
+ else if (!interbase && colorSNPs) {
233
+ inc(bin, fstrand, 'cov', base);
234
+ bin.refbase = mismatch.altbase;
235
+ }
236
+ }
237
+ }
238
+ if (mismatch.type === 'skip') {
239
+ const hash = `${mstart}_${mend}_${fstrand}`;
240
+ if (skipmap[hash] === undefined) {
241
+ skipmap[hash] = {
242
+ feature: feature,
243
+ start: mstart,
244
+ end: mend,
245
+ strand: fstrand,
246
+ xs: getTag(feature, 'XS') || getTag(feature, 'TS'),
247
+ score: 0,
248
+ };
249
+ }
250
+ skipmap[hash].score++;
251
+ }
252
+ }
253
+ }
254
+ return { bins, skipmap };
255
+ }
256
+ }
257
+ const { capabilities } = SNPCoverageAdapter;
258
+ export { capabilities };
259
+ //# sourceMappingURL=SNPCoverageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SNPCoverageAdapter.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/SNPCoverageAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
3
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ import { types } from 'mobx-state-tree';
3
+ export default (pluginManager) => types.late(() => ConfigurationSchema('SNPCoverageAdapter', {
4
+ subadapter: pluginManager.pluggableConfigSchemaType('adapter'),
5
+ }, { explicitlyTyped: true }));
6
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,eAAe,CAAC,aAA4B,EAAE,EAAE,CAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CACd,mBAAmB,CACjB,oBAAoB,EACpB;IACE,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;CAC/D,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => void;
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
2
+ import configSchemaFactory from './configSchema';
3
+ import { capabilities } from './SNPCoverageAdapter';
4
+ export default (pluginManager) => {
5
+ pluginManager.addAdapterType(() => new AdapterType({
6
+ name: 'SNPCoverageAdapter',
7
+ adapterMetadata: {
8
+ category: null,
9
+ displayName: null,
10
+ hiddenFromGUI: true,
11
+ description: null,
12
+ },
13
+ getAdapterClass: () => import('./SNPCoverageAdapter').then(r => r.default),
14
+ configSchema: configSchemaFactory(pluginManager),
15
+ adapterCapabilities: capabilities,
16
+ }));
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AACzE,OAAO,mBAAmB,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,IAAI,EAAE,oBAAoB;QAC1B,eAAe,EAAE;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;SAClB;QACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,YAAY,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAChD,mBAAmB,EAAE,YAAY;KAClC,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
2
+ import { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
3
+ import { ScaleOpts, WiggleBaseRenderer } from '@jbrowse/plugin-wiggle';
4
+ export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
5
+ bpPerPx: number;
6
+ height: number;
7
+ highResolutionScaling: number;
8
+ scaleOpts: ScaleOpts;
9
+ }
10
+ export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
11
+ features: Map<string, Feature>;
12
+ ticks: {
13
+ values: number[];
14
+ };
15
+ displayCrossHatches: boolean;
16
+ modificationTagMap?: Record<string, string>;
17
+ }
18
+ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
19
+ draw(ctx: CanvasRenderingContext2D, props: RenderArgsDeserializedWithFeatures): Promise<void>;
20
+ }
@@ -0,0 +1,185 @@
1
+ import { createJBrowseTheme } from '@jbrowse/core/ui';
2
+ import { featureSpanPx, bpSpanPx } from '@jbrowse/core/util';
3
+ import { readConfObject } from '@jbrowse/core/configuration';
4
+ import { getOrigin, getScale, WiggleBaseRenderer, YSCALEBAR_LABEL_OFFSET, } from '@jbrowse/plugin-wiggle';
5
+ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
6
+ // note: the snps are drawn on linear scale even if the data is drawn in log
7
+ // scape hence the two different scales being used
8
+ async draw(ctx, props) {
9
+ const { features, regions, bpPerPx, displayCrossHatches, modificationTagMap = {}, scaleOpts, height: unadjustedHeight, theme: configTheme, config: cfg, ticks, } = props;
10
+ const theme = createJBrowseTheme(configTheme);
11
+ const [region] = regions;
12
+ const width = (region.end - region.start) / bpPerPx;
13
+ // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the
14
+ // wiggle display, and makes the height of the actual drawn area add
15
+ // "padding" to the top and bottom of the display
16
+ const offset = YSCALEBAR_LABEL_OFFSET;
17
+ const height = unadjustedHeight - offset * 2;
18
+ const { domain } = scaleOpts;
19
+ if (!domain) {
20
+ return;
21
+ }
22
+ const opts = { ...scaleOpts, range: [0, height] };
23
+ const viewScale = getScale(opts);
24
+ // clipping and insertion indicators, uses a smaller height/2 scale
25
+ const indicatorViewScale = getScale({
26
+ ...opts,
27
+ range: [0, height / 2],
28
+ scaleType: 'linear',
29
+ });
30
+ const originY = getOrigin(scaleOpts.scaleType);
31
+ const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold');
32
+ const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts');
33
+ const drawArcs = readConfObject(cfg, 'drawArcs');
34
+ const drawIndicators = readConfObject(cfg, 'drawIndicators');
35
+ // get the y coordinate that we are plotting at, this can be log scale
36
+ const toY = (n) => height - (viewScale(n) || 0) + offset;
37
+ const toHeight = (n) => toY(originY) - toY(n);
38
+ const indicatorToY = (n) => height - (indicatorViewScale(n) || 0) + offset;
39
+ const indicatorToHeight = (n) => indicatorToY(getOrigin('linear')) - indicatorToY(n);
40
+ // @ts-ignore
41
+ const { bases } = theme.palette;
42
+ const colorForBase = {
43
+ A: bases.A.main,
44
+ C: bases.C.main,
45
+ G: bases.G.main,
46
+ T: bases.T.main,
47
+ total: 'lightgrey',
48
+ insertion: 'purple',
49
+ softclip: 'blue',
50
+ hardclip: 'red',
51
+ meth: 'red',
52
+ unmeth: 'blue',
53
+ ref: 'lightgrey',
54
+ };
55
+ const feats = [...features.values()];
56
+ const coverage = feats.filter(f => f.get('type') !== 'skip');
57
+ const skips = feats.filter(f => f.get('type') === 'skip');
58
+ // Use two pass rendering, which helps in visualizing the SNPs at higher
59
+ // bpPerPx First pass: draw the gray background
60
+ ctx.fillStyle = colorForBase.total;
61
+ for (let i = 0; i < coverage.length; i++) {
62
+ const feature = coverage[i];
63
+ const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
64
+ const w = rightPx - leftPx + 0.3;
65
+ const score = feature.get('score');
66
+ ctx.fillRect(leftPx, toY(score), w, toHeight(score));
67
+ }
68
+ // Keep track of previous total which we will use it to draw the interbase
69
+ // indicator (if there is a sudden clip, there will be no read coverage but
70
+ // there will be "clip" coverage) at that position beyond the read. if the
71
+ // clip is right at a block boundary then prevTotal will not be available,
72
+ // so this is a best attempt to plot interbase indicator at the "cliffs"
73
+ let prevTotal = 0;
74
+ // extraHorizontallyFlippedOffset is used to draw interbase items, which
75
+ // are located to the left when forward and right when reversed
76
+ const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0;
77
+ // Second pass: draw the SNP data, and add a minimum feature width of 1px
78
+ // which can be wider than the actual bpPerPx This reduces overdrawing of
79
+ // the grey background over the SNPs
80
+ for (let i = 0; i < coverage.length; i++) {
81
+ const feature = coverage[i];
82
+ const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
83
+ const score = feature.get('score');
84
+ const snpinfo = feature.get('snpinfo');
85
+ const w = Math.max(rightPx - leftPx + 0.3, 1);
86
+ const totalScore = snpinfo.total;
87
+ const keys = Object.keys(snpinfo.cov).sort();
88
+ let curr = 0;
89
+ for (let i = 0; i < keys.length; i++) {
90
+ const base = keys[i];
91
+ const { total } = snpinfo.cov[base];
92
+ ctx.fillStyle =
93
+ colorForBase[base] ||
94
+ modificationTagMap[base.replace('mod_', '')] ||
95
+ '#888';
96
+ const height = toHeight(score);
97
+ const bottom = toY(score) + height;
98
+ ctx.fillRect(leftPx, bottom - ((total + curr) / score) * height, w, (total / score) * height);
99
+ curr += total;
100
+ }
101
+ const interbaseEvents = Object.keys(snpinfo.noncov);
102
+ const indicatorHeight = 4.5;
103
+ if (drawInterbaseCounts) {
104
+ let curr = 0;
105
+ for (let i = 0; i < interbaseEvents.length; i++) {
106
+ const base = interbaseEvents[i];
107
+ const { total } = snpinfo.noncov[base];
108
+ ctx.fillStyle = colorForBase[base];
109
+ ctx.fillRect(leftPx - 0.6 + extraHorizontallyFlippedOffset, indicatorHeight + indicatorToHeight(curr), 1.2, indicatorToHeight(total));
110
+ curr += total;
111
+ }
112
+ }
113
+ if (drawIndicators) {
114
+ let accum = 0;
115
+ let max = 0;
116
+ let maxBase = '';
117
+ for (let i = 0; i < interbaseEvents.length; i++) {
118
+ const base = interbaseEvents[i];
119
+ const { total } = snpinfo.noncov[base];
120
+ accum += total;
121
+ if (total > max) {
122
+ max = total;
123
+ maxBase = base;
124
+ }
125
+ }
126
+ // avoid drawing a bunch of indicators if coverage is very low e.g.
127
+ // less than 7, uses the prev total in the case of the "cliff"
128
+ const indicatorComparatorScore = Math.max(totalScore, prevTotal);
129
+ if (accum > indicatorComparatorScore * indicatorThreshold &&
130
+ indicatorComparatorScore > 7) {
131
+ ctx.fillStyle = colorForBase[maxBase];
132
+ ctx.beginPath();
133
+ const l = leftPx + extraHorizontallyFlippedOffset;
134
+ ctx.moveTo(l - 3.5, 0);
135
+ ctx.lineTo(l + 3.5, 0);
136
+ ctx.lineTo(l, indicatorHeight);
137
+ ctx.fill();
138
+ }
139
+ }
140
+ prevTotal = totalScore;
141
+ }
142
+ if (drawArcs) {
143
+ for (let i = 0; i < skips.length; i++) {
144
+ const f = skips[i];
145
+ const [left, right] = bpSpanPx(f.get('start'), f.get('end'), region, bpPerPx);
146
+ ctx.beginPath();
147
+ const str = f.get('strand');
148
+ const xs = f.get('xs');
149
+ const pos = 'rgba(255,200,200,0.7)';
150
+ const neg = 'rgba(200,200,255,0.7)';
151
+ const neutral = 'rgba(200,200,200,0.7)';
152
+ if (xs === '+') {
153
+ ctx.strokeStyle = pos;
154
+ }
155
+ else if (xs === '-') {
156
+ ctx.strokeStyle = neg;
157
+ }
158
+ else if (str === 1) {
159
+ ctx.strokeStyle = pos;
160
+ }
161
+ else if (str === -1) {
162
+ ctx.strokeStyle = neg;
163
+ }
164
+ else {
165
+ ctx.strokeStyle = neutral;
166
+ }
167
+ ctx.lineWidth = Math.log(f.get('score') + 1);
168
+ ctx.moveTo(left, height - offset * 2);
169
+ ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2);
170
+ ctx.stroke();
171
+ }
172
+ }
173
+ if (displayCrossHatches) {
174
+ ctx.lineWidth = 1;
175
+ ctx.strokeStyle = 'rgba(140,140,140,0.8)';
176
+ ticks.values.forEach(tick => {
177
+ ctx.beginPath();
178
+ ctx.moveTo(0, Math.round(toY(tick)));
179
+ ctx.lineTo(width, Math.round(toY(tick)));
180
+ ctx.stroke();
181
+ });
182
+ }
183
+ }
184
+ }
185
+ //# sourceMappingURL=SNPCoverageRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SNPCoverageRenderer.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/SNPCoverageRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default _default;
@@ -0,0 +1,29 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ export default ConfigurationSchema('SNPCoverageRenderer', {
3
+ clipColor: {
4
+ type: 'color',
5
+ description: 'the color of the clipping marker',
6
+ defaultValue: 'red',
7
+ },
8
+ indicatorThreshold: {
9
+ type: 'number',
10
+ description: 'the proportion of reads containing a insertion/clip indicator',
11
+ defaultValue: 0.4,
12
+ },
13
+ drawArcs: {
14
+ type: 'boolean',
15
+ description: 'Draw sashimi-style arcs for intron features',
16
+ defaultValue: true,
17
+ },
18
+ drawInterbaseCounts: {
19
+ type: 'boolean',
20
+ description: 'draw count "upsidedown histogram" of the interbase events that don\'t contribute to the coverage count so are not drawn in the normal histogram',
21
+ defaultValue: true,
22
+ },
23
+ drawIndicators: {
24
+ type: 'boolean',
25
+ description: 'draw a triangular indicator where an event has been detected',
26
+ defaultValue: true,
27
+ },
28
+ }, { explicitlyTyped: true });
29
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/configSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,qBAAqB,EACrB;IACE,SAAS,EAAE;QACT,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;QAC/C,YAAY,EAAE,KAAK;KACpB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,+DAA+D;QACjE,YAAY,EAAE,GAAG;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6CAA6C;QAC1D,YAAY,EAAE,IAAI;KACnB;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,iJAAiJ;QACnJ,YAAY,EAAE,IAAI;KACnB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,SAAS;QACf,WAAW,EACT,8DAA8D;QAChE,YAAY,EAAE,IAAI;KACnB;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
3
+ export default function register(pluginManager: PluginManager): void;
@@ -0,0 +1,14 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ import ConfigSchema from './configSchema';
3
+ import SNPCoverageRenderer from './SNPCoverageRenderer';
4
+ import { WiggleRendering } from '@jbrowse/plugin-wiggle';
5
+ export const configSchema = ConfigurationSchema('SNPCoverageRenderer', {}, { baseConfiguration: ConfigSchema, explicitlyTyped: true });
6
+ export default function register(pluginManager) {
7
+ pluginManager.addRendererType(() => new SNPCoverageRenderer({
8
+ name: 'SNPCoverageRenderer',
9
+ ReactComponent: WiggleRendering,
10
+ configSchema,
11
+ pluginManager,
12
+ }));
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAC7C,qBAAqB,EACrB,EAAE,EACF,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,CAC3D,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,aAA4B;IAC3D,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,mBAAmB,CAAC;QACtB,IAAI,EAAE,qBAAqB;QAC3B,cAAc,EAAE,eAAe;QAC/B,YAAY;QACZ,aAAa;KACd,CAAC,CACL,CAAA;AACH,CAAC"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ import * as MismatchParser from './BamAdapter/MismatchParser';
4
+ import { LinearPileupDisplayModel } from './LinearPileupDisplay/model';
5
+ export { MismatchParser };
6
+ export type { LinearPileupDisplayModel };
7
+ export default class AlignmentsPlugin extends Plugin {
8
+ name: string;
9
+ install(pluginManager: PluginManager): void;
10
+ }