@jbrowse/plugin-alignments 2.2.0 → 2.2.2

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 (210) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +12 -13
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
  3. package/dist/BamAdapter/BamAdapter.d.ts +1 -1
  4. package/dist/BamAdapter/BamAdapter.js +1 -0
  5. package/dist/BamAdapter/BamAdapter.js.map +1 -1
  6. package/dist/BamAdapter/BamSlightlyLazyFeature.js +1 -0
  7. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
  8. package/dist/BamAdapter/MismatchParser.d.ts +2 -2
  9. package/dist/BamAdapter/MismatchParser.js +4 -7
  10. package/dist/BamAdapter/MismatchParser.js.map +1 -1
  11. package/dist/BamAdapter/configSchema.js +1 -1
  12. package/dist/BamAdapter/configSchema.js.map +1 -1
  13. package/dist/BamAdapter/index.js +7 -5
  14. package/dist/BamAdapter/index.js.map +1 -1
  15. package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -10
  16. package/dist/CramAdapter/CramSlightlyLazyFeature.js +5 -218
  17. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  18. package/dist/CramAdapter/CramTestAdapters.d.ts +1 -1
  19. package/dist/CramAdapter/CramTestAdapters.js +3 -2
  20. package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
  21. package/dist/CramAdapter/configSchema.js +2 -2
  22. package/dist/CramAdapter/configSchema.js.map +1 -1
  23. package/dist/CramAdapter/index.js +7 -5
  24. package/dist/CramAdapter/index.js.map +1 -1
  25. package/dist/CramAdapter/util.d.ts +18 -0
  26. package/dist/CramAdapter/util.js +241 -0
  27. package/dist/CramAdapter/util.js.map +1 -0
  28. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
  29. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  30. package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +1 -1
  31. package/dist/LinearAlignmentsDisplay/models/model.d.ts +5 -5
  32. package/dist/LinearAlignmentsDisplay/models/model.js +7 -7
  33. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
  34. package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +3 -1
  35. package/dist/LinearPileupDisplay/components/ColorByModifications.js +7 -22
  36. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -1
  37. package/dist/LinearPileupDisplay/components/ColorByTag.js +2 -22
  38. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -1
  39. package/dist/LinearPileupDisplay/components/FilterByTag.js +2 -15
  40. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -1
  41. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +2 -19
  42. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -1
  43. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +2 -18
  44. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -1
  45. package/dist/LinearPileupDisplay/components/SortByTag.js +2 -23
  46. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -1
  47. package/dist/LinearPileupDisplay/configSchema.d.ts +4 -4
  48. package/dist/LinearPileupDisplay/configSchema.js +2 -2
  49. package/dist/LinearPileupDisplay/configSchema.js.map +1 -1
  50. package/dist/LinearPileupDisplay/index.d.ts +3 -0
  51. package/dist/LinearPileupDisplay/index.js +3 -0
  52. package/dist/LinearPileupDisplay/index.js.map +1 -1
  53. package/dist/LinearPileupDisplay/model.d.ts +19 -9
  54. package/dist/LinearPileupDisplay/model.js +25 -30
  55. package/dist/LinearPileupDisplay/model.js.map +1 -1
  56. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  57. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +14 -10
  58. package/dist/LinearSNPCoverageDisplay/models/model.js +8 -6
  59. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  60. package/dist/PileupRPC/rpcMethods.d.ts +1 -1
  61. package/dist/PileupRPC/rpcMethods.js +12 -7
  62. package/dist/PileupRPC/rpcMethods.js.map +1 -1
  63. package/dist/PileupRenderer/PileupLayoutSession.d.ts +1 -1
  64. package/dist/PileupRenderer/PileupRenderer.js +32 -28
  65. package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
  66. package/dist/PileupRenderer/configSchema.js +1 -1
  67. package/dist/PileupRenderer/configSchema.js.map +1 -1
  68. package/dist/PileupRenderer/index.js +8 -6
  69. package/dist/PileupRenderer/index.js.map +1 -1
  70. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +0 -51
  71. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +3 -182
  72. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  73. package/dist/SNPCoverageAdapter/configSchema.d.ts +2 -3
  74. package/dist/SNPCoverageAdapter/configSchema.js +6 -3
  75. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -1
  76. package/dist/SNPCoverageAdapter/generateCoverageBins.d.ts +53 -0
  77. package/dist/SNPCoverageAdapter/generateCoverageBins.js +185 -0
  78. package/dist/SNPCoverageAdapter/generateCoverageBins.js.map +1 -0
  79. package/dist/SNPCoverageAdapter/index.d.ts +1 -2
  80. package/dist/SNPCoverageAdapter/index.js +17 -14
  81. package/dist/SNPCoverageAdapter/index.js.map +1 -1
  82. package/dist/index.d.ts +3 -2
  83. package/dist/index.js +4 -2
  84. package/dist/index.js.map +1 -1
  85. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +12 -13
  86. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
  87. package/esm/BamAdapter/BamAdapter.d.ts +1 -1
  88. package/esm/BamAdapter/BamAdapter.js +1 -0
  89. package/esm/BamAdapter/BamAdapter.js.map +1 -1
  90. package/esm/BamAdapter/BamSlightlyLazyFeature.js +1 -0
  91. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
  92. package/esm/BamAdapter/MismatchParser.d.ts +2 -2
  93. package/esm/BamAdapter/MismatchParser.js +4 -7
  94. package/esm/BamAdapter/MismatchParser.js.map +1 -1
  95. package/esm/BamAdapter/configSchema.js +1 -1
  96. package/esm/BamAdapter/configSchema.js.map +1 -1
  97. package/esm/BamAdapter/index.js +7 -5
  98. package/esm/BamAdapter/index.js.map +1 -1
  99. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -10
  100. package/esm/CramAdapter/CramSlightlyLazyFeature.js +5 -218
  101. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  102. package/esm/CramAdapter/CramTestAdapters.d.ts +1 -1
  103. package/esm/CramAdapter/CramTestAdapters.js +3 -2
  104. package/esm/CramAdapter/CramTestAdapters.js.map +1 -1
  105. package/esm/CramAdapter/configSchema.js +2 -2
  106. package/esm/CramAdapter/configSchema.js.map +1 -1
  107. package/esm/CramAdapter/index.js +7 -5
  108. package/esm/CramAdapter/index.js.map +1 -1
  109. package/esm/CramAdapter/util.d.ts +18 -0
  110. package/esm/CramAdapter/util.js +236 -0
  111. package/esm/CramAdapter/util.js.map +1 -0
  112. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
  113. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  114. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +1 -1
  115. package/esm/LinearAlignmentsDisplay/models/model.d.ts +5 -5
  116. package/esm/LinearAlignmentsDisplay/models/model.js +7 -7
  117. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
  118. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +3 -1
  119. package/esm/LinearPileupDisplay/components/ColorByModifications.js +8 -23
  120. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -1
  121. package/esm/LinearPileupDisplay/components/ColorByTag.js +3 -20
  122. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -1
  123. package/esm/LinearPileupDisplay/components/FilterByTag.js +3 -13
  124. package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -1
  125. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +3 -17
  126. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -1
  127. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +3 -16
  128. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -1
  129. package/esm/LinearPileupDisplay/components/SortByTag.js +3 -21
  130. package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -1
  131. package/esm/LinearPileupDisplay/configSchema.d.ts +4 -4
  132. package/esm/LinearPileupDisplay/configSchema.js +2 -2
  133. package/esm/LinearPileupDisplay/configSchema.js.map +1 -1
  134. package/esm/LinearPileupDisplay/index.d.ts +3 -0
  135. package/esm/LinearPileupDisplay/index.js +1 -0
  136. package/esm/LinearPileupDisplay/index.js.map +1 -1
  137. package/esm/LinearPileupDisplay/model.d.ts +19 -9
  138. package/esm/LinearPileupDisplay/model.js +25 -30
  139. package/esm/LinearPileupDisplay/model.js.map +1 -1
  140. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  141. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +14 -10
  142. package/esm/LinearSNPCoverageDisplay/models/model.js +9 -7
  143. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  144. package/esm/PileupRPC/rpcMethods.d.ts +1 -1
  145. package/esm/PileupRPC/rpcMethods.js +12 -7
  146. package/esm/PileupRPC/rpcMethods.js.map +1 -1
  147. package/esm/PileupRenderer/PileupLayoutSession.d.ts +1 -1
  148. package/esm/PileupRenderer/PileupRenderer.js +32 -28
  149. package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
  150. package/esm/PileupRenderer/configSchema.js +1 -1
  151. package/esm/PileupRenderer/configSchema.js.map +1 -1
  152. package/esm/PileupRenderer/index.js +8 -6
  153. package/esm/PileupRenderer/index.js.map +1 -1
  154. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +0 -51
  155. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +4 -183
  156. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  157. package/esm/SNPCoverageAdapter/configSchema.d.ts +2 -3
  158. package/esm/SNPCoverageAdapter/configSchema.js +6 -3
  159. package/esm/SNPCoverageAdapter/configSchema.js.map +1 -1
  160. package/esm/SNPCoverageAdapter/generateCoverageBins.d.ts +53 -0
  161. package/esm/SNPCoverageAdapter/generateCoverageBins.js +182 -0
  162. package/esm/SNPCoverageAdapter/generateCoverageBins.js.map +1 -0
  163. package/esm/SNPCoverageAdapter/index.d.ts +1 -2
  164. package/esm/SNPCoverageAdapter/index.js +17 -15
  165. package/esm/SNPCoverageAdapter/index.js.map +1 -1
  166. package/esm/index.d.ts +3 -2
  167. package/esm/index.js +2 -2
  168. package/esm/index.js.map +1 -1
  169. package/package.json +4 -3
  170. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +17 -16
  171. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +1 -473
  172. package/src/AlignmentsFeatureDetail/index.test.js +6 -4
  173. package/src/BamAdapter/BamAdapter.ts +3 -2
  174. package/src/BamAdapter/BamSlightlyLazyFeature.ts +2 -1
  175. package/src/BamAdapter/MismatchParser.test.ts +21 -12
  176. package/src/BamAdapter/MismatchParser.ts +7 -10
  177. package/src/BamAdapter/__snapshots__/BamAdapter.test.ts.snap +135 -135
  178. package/src/BamAdapter/configSchema.ts +1 -1
  179. package/src/BamAdapter/index.ts +7 -8
  180. package/src/CombinationTest.test.ts +107 -0
  181. package/src/CramAdapter/CramSlightlyLazyFeature.ts +10 -219
  182. package/src/CramAdapter/CramTestAdapters.ts +2 -1
  183. package/src/CramAdapter/__snapshots__/CramAdapter.test.ts.snap +31 -31
  184. package/src/CramAdapter/__snapshots__/util.test.ts.snap +14 -0
  185. package/src/CramAdapter/configSchema.ts +2 -3
  186. package/src/CramAdapter/index.ts +7 -8
  187. package/src/CramAdapter/util.test.ts +26 -0
  188. package/src/CramAdapter/util.ts +251 -0
  189. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -1
  190. package/src/LinearAlignmentsDisplay/models/model.tsx +8 -7
  191. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +5 -34
  192. package/src/LinearPileupDisplay/components/ColorByTag.tsx +2 -29
  193. package/src/LinearPileupDisplay/components/FilterByTag.tsx +2 -22
  194. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +2 -22
  195. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +2 -24
  196. package/src/LinearPileupDisplay/components/SortByTag.tsx +2 -31
  197. package/src/LinearPileupDisplay/configSchema.ts +3 -5
  198. package/src/LinearPileupDisplay/index.ts +5 -0
  199. package/src/LinearPileupDisplay/model.ts +31 -30
  200. package/src/LinearSNPCoverageDisplay/models/model.ts +12 -8
  201. package/src/PileupRPC/rpcMethods.ts +15 -20
  202. package/src/PileupRenderer/{PileupRenderer.tsx → PileupRenderer.ts} +48 -54
  203. package/src/PileupRenderer/configSchema.ts +1 -1
  204. package/src/PileupRenderer/index.ts +8 -9
  205. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -249
  206. package/src/SNPCoverageAdapter/configSchema.ts +14 -13
  207. package/src/SNPCoverageAdapter/generateCoverageBins.ts +245 -0
  208. package/src/SNPCoverageAdapter/index.ts +17 -18
  209. package/src/__snapshots__/index.test.ts.snap +1 -1
  210. package/src/index.ts +11 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-alignments",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "JBrowse 2 alignments adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -27,7 +27,7 @@
27
27
  "build": "npm-run-all build:*",
28
28
  "test": "cd ../..; jest plugins/alignments",
29
29
  "prepublishOnly": "yarn test",
30
- "prepack": "yarn build; yarn useDist",
30
+ "prepack": "yarn build && yarn useDist",
31
31
  "postpack": "yarn useSrc",
32
32
  "useDist": "node ../../scripts/useDist.js",
33
33
  "useSrc": "node ../../scripts/useSrc.js",
@@ -40,6 +40,7 @@
40
40
  "@gmod/bam": "^1.1.15",
41
41
  "@gmod/cram": "^1.7.1",
42
42
  "@mui/icons-material": "^5.0.1",
43
+ "clone": "^2.1.2",
43
44
  "color": "^3.1.2",
44
45
  "copy-to-clipboard": "^3.3.1",
45
46
  "fast-deep-equal": "^3.1.3",
@@ -64,5 +65,5 @@
64
65
  "distModule": "esm/index.js",
65
66
  "srcModule": "src/index.ts",
66
67
  "module": "esm/index.js",
67
- "gitHead": "cf31db8d833117f8822510340664fb3f045975cb"
68
+ "gitHead": "abbc00e8feedbc58de84a7a3e735ec0224909b29"
68
69
  }
@@ -11,6 +11,7 @@ import { makeStyles } from 'tss-react/mui'
11
11
  import { observer } from 'mobx-react'
12
12
  import { getSession } from '@jbrowse/core/util'
13
13
  import copy from 'copy-to-clipboard'
14
+ import clone from 'clone'
14
15
  import {
15
16
  FeatureDetails,
16
17
  BaseCard,
@@ -18,13 +19,13 @@ import {
18
19
  } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'
19
20
  import { parseCigar } from '../BamAdapter/MismatchParser'
20
21
 
21
- const useStyles = makeStyles()(() => ({
22
+ const useStyles = makeStyles()({
22
23
  compact: {
23
24
  paddingRight: 0,
24
25
  paddingTop: 0,
25
26
  paddingBottom: 0,
26
27
  },
27
- }))
28
+ })
28
29
 
29
30
  const omit = ['clipPos', 'flags']
30
31
 
@@ -144,12 +145,12 @@ function SupplementaryAlignments(props: { tag: string; model: any }) {
144
145
  return (
145
146
  <li key={`${locString}-${index}`}>
146
147
  <Link
147
- onClick={event => {
148
+ onClick={async event => {
148
149
  event.preventDefault()
149
150
  const { view } = model
150
151
  try {
151
152
  if (view) {
152
- view.navToLocString(locString)
153
+ await view.navToLocString(locString)
153
154
  } else {
154
155
  throw new Error(
155
156
  'No view associated with this view anymore',
@@ -177,17 +178,15 @@ function PairLink({ locString, model }: { locString: string; model: any }) {
177
178
  const session = getSession(model)
178
179
  return (
179
180
  <Link
180
- onClick={() => {
181
+ onClick={async () => {
181
182
  const { view } = model
183
+ if (!view) {
184
+ throw new Error(
185
+ 'No view associated with this feature detail panel anymore',
186
+ )
187
+ }
182
188
  try {
183
- if (view) {
184
- view.navToLocString(locString)
185
- } else {
186
- session.notify(
187
- 'No view associated with this feature detail panel anymore',
188
- 'warning',
189
- )
190
- }
189
+ await view.navToLocString(locString)
191
190
  } catch (e) {
192
191
  console.error(e)
193
192
  session.notify(`${e}`)
@@ -203,7 +202,7 @@ function PairLink({ locString, model }: { locString: string; model: any }) {
203
202
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
203
  function AlignmentFeatureDetails(props: { model: any }) {
205
204
  const { model } = props
206
- const feat = JSON.parse(JSON.stringify(model.featureData))
205
+ const feat = clone(model.featureData)
207
206
  const SA = (feat.tags && feat.tags.SA) || feat.SA
208
207
  return (
209
208
  <Paper data-testid="alignment-side-drawer">
@@ -211,7 +210,7 @@ function AlignmentFeatureDetails(props: { model: any }) {
211
210
  {...props}
212
211
  omit={omit}
213
212
  feature={feat}
214
- formatter={(value: unknown, key: string) => {
213
+ formatter={(value, key) => {
215
214
  return key === 'next_segment_position' ? (
216
215
  <PairLink model={model} locString={value as string} />
217
216
  ) : (
@@ -220,7 +219,9 @@ function AlignmentFeatureDetails(props: { model: any }) {
220
219
  }}
221
220
  />
222
221
  {SA ? <SupplementaryAlignments model={model} tag={SA} /> : null}
223
- <AlignmentFlags feature={feat} {...props} />
222
+ {feat.flags !== undefined ? (
223
+ <AlignmentFlags feature={feat} {...props} />
224
+ ) : null}
224
225
  </Paper>
225
226
  )
226
227
  }
@@ -73,9 +73,7 @@ exports[`open up a widget 1`] = `
73
73
  <div
74
74
  class="css-1omt041-fieldValue"
75
75
  >
76
- <div>
77
- ctgA:3..102 (+)
78
- </div>
76
+ ctgA:3..102 (+)
79
77
  </div>
80
78
  </div>
81
79
  <div
@@ -325,475 +323,5 @@ exports[`open up a widget 1`] = `
325
323
  </div>
326
324
  </div>
327
325
  </div>
328
- <div
329
- class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiAccordion-root MuiAccordion-rounded Mui-expanded MuiAccordion-gutters css-1elwnq4-MuiPaper-root-MuiAccordion-root"
330
- >
331
- <div
332
- aria-expanded="true"
333
- class="MuiButtonBase-root MuiAccordionSummary-root Mui-expanded MuiAccordionSummary-gutters css-sh22l5-MuiButtonBase-root-MuiAccordionSummary-root"
334
- role="button"
335
- tabindex="0"
336
- >
337
- <div
338
- class="MuiAccordionSummary-content Mui-expanded MuiAccordionSummary-contentGutters css-o4b71y-MuiAccordionSummary-content"
339
- >
340
- <span
341
- class="MuiTypography-root MuiTypography-button css-1f0on15-MuiTypography-root"
342
- >
343
-
344
- Flags
345
- </span>
346
- </div>
347
- <div
348
- class="MuiAccordionSummary-expandIconWrapper Mui-expanded css-yw020d-MuiAccordionSummary-expandIconWrapper"
349
- >
350
- <svg
351
- aria-hidden="true"
352
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-125qixp-MuiSvgIcon-root-expandIcon"
353
- data-testid="ExpandMoreIcon"
354
- focusable="false"
355
- viewBox="0 0 24 24"
356
- >
357
- <path
358
- d="M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"
359
- />
360
- </svg>
361
- </div>
362
- </div>
363
- <div
364
- class="MuiCollapse-root MuiCollapse-vertical MuiCollapse-entered css-pwcg7p-MuiCollapse-root"
365
- style="min-height: 0px;"
366
- >
367
- <div
368
- class="MuiCollapse-wrapper MuiCollapse-vertical css-smkl36-MuiCollapse-wrapper"
369
- >
370
- <div
371
- class="MuiCollapse-wrapperInner MuiCollapse-vertical css-9l5vo-MuiCollapse-wrapperInner"
372
- >
373
- <div
374
- class="MuiAccordion-region"
375
- role="region"
376
- >
377
- <div
378
- class="MuiAccordionDetails-root css-rqrb7m-MuiAccordionDetails-root-expansionPanelDetails"
379
- >
380
- <div
381
- class="MuiFormGroup-root css-dmmspl-MuiFormGroup-root"
382
- >
383
- <label
384
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
385
- >
386
- <span
387
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
388
- >
389
- <input
390
- class="PrivateSwitchBase-input css-1m9pwf3"
391
- data-indeterminate="false"
392
- name="read paired"
393
- readonly=""
394
- type="checkbox"
395
- />
396
- <svg
397
- aria-hidden="true"
398
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
399
- data-testid="CheckBoxOutlineBlankIcon"
400
- focusable="false"
401
- viewBox="0 0 24 24"
402
- >
403
- <path
404
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
405
- />
406
- </svg>
407
- <span
408
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
409
- />
410
- </span>
411
- <span
412
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
413
- >
414
- read paired
415
- </span>
416
- </label>
417
- <label
418
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
419
- >
420
- <span
421
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
422
- >
423
- <input
424
- class="PrivateSwitchBase-input css-1m9pwf3"
425
- data-indeterminate="false"
426
- name="read mapped in proper pair"
427
- readonly=""
428
- type="checkbox"
429
- />
430
- <svg
431
- aria-hidden="true"
432
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
433
- data-testid="CheckBoxOutlineBlankIcon"
434
- focusable="false"
435
- viewBox="0 0 24 24"
436
- >
437
- <path
438
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
439
- />
440
- </svg>
441
- <span
442
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
443
- />
444
- </span>
445
- <span
446
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
447
- >
448
- read mapped in proper pair
449
- </span>
450
- </label>
451
- <label
452
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
453
- >
454
- <span
455
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
456
- >
457
- <input
458
- class="PrivateSwitchBase-input css-1m9pwf3"
459
- data-indeterminate="false"
460
- name="read unmapped"
461
- readonly=""
462
- type="checkbox"
463
- />
464
- <svg
465
- aria-hidden="true"
466
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
467
- data-testid="CheckBoxOutlineBlankIcon"
468
- focusable="false"
469
- viewBox="0 0 24 24"
470
- >
471
- <path
472
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
473
- />
474
- </svg>
475
- <span
476
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
477
- />
478
- </span>
479
- <span
480
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
481
- >
482
- read unmapped
483
- </span>
484
- </label>
485
- <label
486
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
487
- >
488
- <span
489
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
490
- >
491
- <input
492
- class="PrivateSwitchBase-input css-1m9pwf3"
493
- data-indeterminate="false"
494
- name="mate unmapped"
495
- readonly=""
496
- type="checkbox"
497
- />
498
- <svg
499
- aria-hidden="true"
500
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
501
- data-testid="CheckBoxOutlineBlankIcon"
502
- focusable="false"
503
- viewBox="0 0 24 24"
504
- >
505
- <path
506
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
507
- />
508
- </svg>
509
- <span
510
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
511
- />
512
- </span>
513
- <span
514
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
515
- >
516
- mate unmapped
517
- </span>
518
- </label>
519
- <label
520
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
521
- >
522
- <span
523
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
524
- >
525
- <input
526
- class="PrivateSwitchBase-input css-1m9pwf3"
527
- data-indeterminate="false"
528
- name="read reverse strand"
529
- readonly=""
530
- type="checkbox"
531
- />
532
- <svg
533
- aria-hidden="true"
534
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
535
- data-testid="CheckBoxOutlineBlankIcon"
536
- focusable="false"
537
- viewBox="0 0 24 24"
538
- >
539
- <path
540
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
541
- />
542
- </svg>
543
- <span
544
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
545
- />
546
- </span>
547
- <span
548
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
549
- >
550
- read reverse strand
551
- </span>
552
- </label>
553
- <label
554
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
555
- >
556
- <span
557
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
558
- >
559
- <input
560
- class="PrivateSwitchBase-input css-1m9pwf3"
561
- data-indeterminate="false"
562
- name="mate reverse strand"
563
- readonly=""
564
- type="checkbox"
565
- />
566
- <svg
567
- aria-hidden="true"
568
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
569
- data-testid="CheckBoxOutlineBlankIcon"
570
- focusable="false"
571
- viewBox="0 0 24 24"
572
- >
573
- <path
574
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
575
- />
576
- </svg>
577
- <span
578
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
579
- />
580
- </span>
581
- <span
582
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
583
- >
584
- mate reverse strand
585
- </span>
586
- </label>
587
- <label
588
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
589
- >
590
- <span
591
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
592
- >
593
- <input
594
- class="PrivateSwitchBase-input css-1m9pwf3"
595
- data-indeterminate="false"
596
- name="first in pair"
597
- readonly=""
598
- type="checkbox"
599
- />
600
- <svg
601
- aria-hidden="true"
602
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
603
- data-testid="CheckBoxOutlineBlankIcon"
604
- focusable="false"
605
- viewBox="0 0 24 24"
606
- >
607
- <path
608
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
609
- />
610
- </svg>
611
- <span
612
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
613
- />
614
- </span>
615
- <span
616
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
617
- >
618
- first in pair
619
- </span>
620
- </label>
621
- <label
622
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
623
- >
624
- <span
625
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
626
- >
627
- <input
628
- class="PrivateSwitchBase-input css-1m9pwf3"
629
- data-indeterminate="false"
630
- name="second in pair"
631
- readonly=""
632
- type="checkbox"
633
- />
634
- <svg
635
- aria-hidden="true"
636
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
637
- data-testid="CheckBoxOutlineBlankIcon"
638
- focusable="false"
639
- viewBox="0 0 24 24"
640
- >
641
- <path
642
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
643
- />
644
- </svg>
645
- <span
646
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
647
- />
648
- </span>
649
- <span
650
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
651
- >
652
- second in pair
653
- </span>
654
- </label>
655
- <label
656
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
657
- >
658
- <span
659
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
660
- >
661
- <input
662
- class="PrivateSwitchBase-input css-1m9pwf3"
663
- data-indeterminate="false"
664
- name="not primary alignment"
665
- readonly=""
666
- type="checkbox"
667
- />
668
- <svg
669
- aria-hidden="true"
670
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
671
- data-testid="CheckBoxOutlineBlankIcon"
672
- focusable="false"
673
- viewBox="0 0 24 24"
674
- >
675
- <path
676
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
677
- />
678
- </svg>
679
- <span
680
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
681
- />
682
- </span>
683
- <span
684
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
685
- >
686
- not primary alignment
687
- </span>
688
- </label>
689
- <label
690
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
691
- >
692
- <span
693
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
694
- >
695
- <input
696
- class="PrivateSwitchBase-input css-1m9pwf3"
697
- data-indeterminate="false"
698
- name="read fails platform/vendor quality checks"
699
- readonly=""
700
- type="checkbox"
701
- />
702
- <svg
703
- aria-hidden="true"
704
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
705
- data-testid="CheckBoxOutlineBlankIcon"
706
- focusable="false"
707
- viewBox="0 0 24 24"
708
- >
709
- <path
710
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
711
- />
712
- </svg>
713
- <span
714
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
715
- />
716
- </span>
717
- <span
718
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
719
- >
720
- read fails platform/vendor quality checks
721
- </span>
722
- </label>
723
- <label
724
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
725
- >
726
- <span
727
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
728
- >
729
- <input
730
- class="PrivateSwitchBase-input css-1m9pwf3"
731
- data-indeterminate="false"
732
- name="read is PCR or optical duplicate"
733
- readonly=""
734
- type="checkbox"
735
- />
736
- <svg
737
- aria-hidden="true"
738
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
739
- data-testid="CheckBoxOutlineBlankIcon"
740
- focusable="false"
741
- viewBox="0 0 24 24"
742
- >
743
- <path
744
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
745
- />
746
- </svg>
747
- <span
748
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
749
- />
750
- </span>
751
- <span
752
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
753
- >
754
- read is PCR or optical duplicate
755
- </span>
756
- </label>
757
- <label
758
- class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-j204z7-MuiFormControlLabel-root"
759
- >
760
- <span
761
- class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-1r7hq7f-MuiButtonBase-root-MuiCheckbox-root-compact"
762
- >
763
- <input
764
- class="PrivateSwitchBase-input css-1m9pwf3"
765
- data-indeterminate="false"
766
- name="supplementary alignment"
767
- readonly=""
768
- type="checkbox"
769
- />
770
- <svg
771
- aria-hidden="true"
772
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
773
- data-testid="CheckBoxOutlineBlankIcon"
774
- focusable="false"
775
- viewBox="0 0 24 24"
776
- >
777
- <path
778
- d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
779
- />
780
- </svg>
781
- <span
782
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
783
- />
784
- </span>
785
- <span
786
- class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-ahj2mt-MuiTypography-root"
787
- >
788
- supplementary alignment
789
- </span>
790
- </label>
791
- </div>
792
- </div>
793
- </div>
794
- </div>
795
- </div>
796
- </div>
797
- </div>
798
326
  </div>
799
327
  `;
@@ -11,14 +11,16 @@ test('open up a widget', () => {
11
11
  const pluginManager = new PluginManager([])
12
12
 
13
13
  const Session = types.model({
14
- pluginManager: types.optional(types.frozen(), {}),
15
14
  rpcManager: types.optional(types.frozen(), {}),
16
15
  configuration: ConfigurationSchema('test', {}),
17
16
  widget: stateModelFactory(pluginManager),
18
17
  })
19
- const session = Session.create({
20
- widget: { type: 'AlignmentsFeatureWidget' },
21
- })
18
+ const session = Session.create(
19
+ {
20
+ widget: { type: 'AlignmentsFeatureWidget' },
21
+ },
22
+ { pluginManager },
23
+ )
22
24
  session.widget.setFeatureData({
23
25
  seq: 'TTGTTGCGGAGTTGAACAACGGCATTAGGAACACTTCCGTCTCTCACTTTTATACGATTATGATTGGTTCTTTAGCCTTGGTTTAGATTGGTAGTAGTAG',
24
26
  start: 2,
@@ -4,11 +4,12 @@ import {
4
4
  BaseOptions,
5
5
  } from '@jbrowse/core/data_adapters/BaseAdapter'
6
6
  import { Region } from '@jbrowse/core/util/types'
7
- import { bytesForRegions, updateStatus } from '@jbrowse/core/util'
7
+ import { bytesForRegions, updateStatus, Feature } from '@jbrowse/core/util'
8
8
  import { openLocation } from '@jbrowse/core/util/io'
9
9
  import { ObservableCreate } from '@jbrowse/core/util/rxjs'
10
- import { Feature } from '@jbrowse/core/util/simpleFeature'
11
10
  import { toArray } from 'rxjs/operators'
11
+
12
+ // locals
12
13
  import BamSlightlyLazyFeature from './BamSlightlyLazyFeature'
13
14
 
14
15
  interface Header {
@@ -4,8 +4,9 @@ import {
4
4
  SimpleFeatureSerialized,
5
5
  } from '@jbrowse/core/util/simpleFeature'
6
6
  import { BamRecord } from '@gmod/bam'
7
- import { getMismatches } from './MismatchParser'
8
7
 
8
+ // locals
9
+ import { getMismatches } from './MismatchParser'
9
10
  import BamAdapter from './BamAdapter'
10
11
 
11
12
  export default class BamSlightlyLazyFeature implements Feature {