@jbrowse/plugin-alignments 2.3.4 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/BamAdapter/BamAdapter.js +2 -2
  2. package/dist/BamAdapter/BamAdapter.js.map +1 -1
  3. package/dist/BamAdapter/BamSlightlyLazyFeature.js +2 -2
  4. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
  5. package/dist/CramAdapter/CramAdapter.js +2 -2
  6. package/dist/CramAdapter/CramAdapter.js.map +1 -1
  7. package/dist/CramAdapter/CramSlightlyLazyFeature.js +2 -2
  8. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  9. package/dist/CramAdapter/util.js +10 -10
  10. package/dist/CramAdapter/util.js.map +1 -1
  11. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +2 -2
  12. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  13. package/dist/LinearAlignmentsDisplay/models/configSchema.js +7 -0
  14. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -1
  15. package/dist/LinearAlignmentsDisplay/models/model.d.ts +21 -5
  16. package/dist/LinearAlignmentsDisplay/models/model.js +22 -6
  17. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
  18. package/dist/LinearPileupDisplay/index.d.ts +2 -3
  19. package/dist/LinearPileupDisplay/index.js +4 -2
  20. package/dist/LinearPileupDisplay/index.js.map +1 -1
  21. package/dist/LinearPileupDisplay/model.d.ts +70 -9
  22. package/dist/LinearPileupDisplay/model.js +4 -4
  23. package/dist/LinearPileupDisplay/model.js.map +1 -1
  24. package/dist/LinearReadArcsDisplay/components/ReactComponent.js +14 -11
  25. package/dist/LinearReadArcsDisplay/components/ReactComponent.js.map +1 -1
  26. package/dist/LinearReadArcsDisplay/model.d.ts +77 -28
  27. package/dist/LinearReadArcsDisplay/model.js +16 -4
  28. package/dist/LinearReadArcsDisplay/model.js.map +1 -1
  29. package/dist/LinearReadCloudDisplay/model.d.ts +71 -19
  30. package/dist/LinearReadCloudDisplay/model.js +15 -3
  31. package/dist/LinearReadCloudDisplay/model.js.map +1 -1
  32. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +8 -13
  33. package/dist/MismatchParser/index.js +4 -6
  34. package/dist/MismatchParser/index.js.map +1 -1
  35. package/dist/NestedFrequencyTable.js +3 -13
  36. package/dist/NestedFrequencyTable.js.map +1 -1
  37. package/dist/PileupRPC/rpcMethods.d.ts +3 -4
  38. package/dist/PileupRPC/rpcMethods.js +6 -6
  39. package/dist/PileupRPC/rpcMethods.js.map +1 -1
  40. package/dist/PileupRenderer/PileupRenderer.d.ts +6 -4
  41. package/dist/PileupRenderer/PileupRenderer.js +32 -38
  42. package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
  43. package/dist/PileupRenderer/components/PileupRendering.js +2 -2
  44. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -1
  45. package/dist/PileupRenderer/configSchema.js +1 -1
  46. package/dist/PileupRenderer/configSchema.js.map +1 -1
  47. package/dist/PileupRenderer/sortUtil.js +5 -4
  48. package/dist/PileupRenderer/sortUtil.js.map +1 -1
  49. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +10 -7
  50. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  51. package/dist/index.d.ts +3 -5
  52. package/dist/index.js +6 -6
  53. package/dist/index.js.map +1 -1
  54. package/esm/BamAdapter/BamAdapter.js +2 -2
  55. package/esm/BamAdapter/BamAdapter.js.map +1 -1
  56. package/esm/BamAdapter/BamSlightlyLazyFeature.js +2 -2
  57. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
  58. package/esm/CramAdapter/CramAdapter.js +2 -2
  59. package/esm/CramAdapter/CramAdapter.js.map +1 -1
  60. package/esm/CramAdapter/CramSlightlyLazyFeature.js +2 -2
  61. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  62. package/esm/CramAdapter/util.js +10 -10
  63. package/esm/CramAdapter/util.js.map +1 -1
  64. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +2 -2
  65. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  66. package/esm/LinearAlignmentsDisplay/models/configSchema.js +7 -0
  67. package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -1
  68. package/esm/LinearAlignmentsDisplay/models/model.d.ts +21 -5
  69. package/esm/LinearAlignmentsDisplay/models/model.js +22 -6
  70. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
  71. package/esm/LinearPileupDisplay/index.d.ts +2 -3
  72. package/esm/LinearPileupDisplay/index.js +2 -1
  73. package/esm/LinearPileupDisplay/index.js.map +1 -1
  74. package/esm/LinearPileupDisplay/model.d.ts +70 -9
  75. package/esm/LinearPileupDisplay/model.js +4 -4
  76. package/esm/LinearPileupDisplay/model.js.map +1 -1
  77. package/esm/LinearReadArcsDisplay/components/ReactComponent.js +14 -11
  78. package/esm/LinearReadArcsDisplay/components/ReactComponent.js.map +1 -1
  79. package/esm/LinearReadArcsDisplay/model.d.ts +77 -28
  80. package/esm/LinearReadArcsDisplay/model.js +16 -4
  81. package/esm/LinearReadArcsDisplay/model.js.map +1 -1
  82. package/esm/LinearReadCloudDisplay/model.d.ts +71 -19
  83. package/esm/LinearReadCloudDisplay/model.js +15 -3
  84. package/esm/LinearReadCloudDisplay/model.js.map +1 -1
  85. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +8 -13
  86. package/esm/MismatchParser/index.js +4 -6
  87. package/esm/MismatchParser/index.js.map +1 -1
  88. package/esm/NestedFrequencyTable.js +3 -13
  89. package/esm/NestedFrequencyTable.js.map +1 -1
  90. package/esm/PileupRPC/rpcMethods.d.ts +3 -4
  91. package/esm/PileupRPC/rpcMethods.js +3 -4
  92. package/esm/PileupRPC/rpcMethods.js.map +1 -1
  93. package/esm/PileupRenderer/PileupRenderer.d.ts +6 -4
  94. package/esm/PileupRenderer/PileupRenderer.js +32 -38
  95. package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
  96. package/esm/PileupRenderer/components/PileupRendering.js +2 -2
  97. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -1
  98. package/esm/PileupRenderer/configSchema.js +1 -1
  99. package/esm/PileupRenderer/configSchema.js.map +1 -1
  100. package/esm/PileupRenderer/sortUtil.js +5 -4
  101. package/esm/PileupRenderer/sortUtil.js.map +1 -1
  102. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +10 -7
  103. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  104. package/esm/index.d.ts +3 -5
  105. package/esm/index.js +3 -3
  106. package/esm/index.js.map +1 -1
  107. package/package.json +2 -2
  108. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.tsx.snap +13 -13
  109. package/src/AlignmentsFeatureDetail/index.test.tsx +1 -1
  110. package/src/BamAdapter/BamAdapter.ts +2 -2
  111. package/src/BamAdapter/BamSlightlyLazyFeature.ts +2 -2
  112. package/src/CramAdapter/CramAdapter.ts +2 -2
  113. package/src/CramAdapter/CramSlightlyLazyFeature.ts +2 -2
  114. package/src/CramAdapter/util.ts +10 -10
  115. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +2 -2
  116. package/src/LinearAlignmentsDisplay/models/configSchema.test.ts +1 -1
  117. package/src/LinearAlignmentsDisplay/models/configSchema.ts +8 -0
  118. package/src/LinearAlignmentsDisplay/models/model.tsx +21 -6
  119. package/src/LinearPileupDisplay/index.ts +2 -4
  120. package/src/LinearPileupDisplay/model.ts +4 -4
  121. package/src/LinearReadArcsDisplay/components/ReactComponent.tsx +14 -12
  122. package/src/LinearReadArcsDisplay/model.tsx +23 -5
  123. package/src/LinearReadCloudDisplay/model.tsx +23 -7
  124. package/src/LinearSNPCoverageDisplay/models/configSchema.test.ts +1 -1
  125. package/src/MismatchParser/index.ts +6 -8
  126. package/src/NestedFrequencyTable.ts +3 -11
  127. package/src/PileupRPC/rpcMethods.ts +3 -9
  128. package/src/PileupRenderer/PileupRenderer.ts +49 -65
  129. package/src/PileupRenderer/components/PileupRendering.tsx +2 -2
  130. package/src/PileupRenderer/configSchema.ts +1 -1
  131. package/src/PileupRenderer/sortUtil.ts +5 -4
  132. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +14 -13
  133. package/src/index.ts +5 -10
@@ -1,9 +1,3 @@
1
- import PileupGetReducedFeatures from './methods/GetReducedFeatures'
2
- import PileupGetGlobalValueForTag from './methods/GetGlobalValueForTag'
3
- import PileupGetVisibleModifications from './methods/GetVisibleModifications'
4
-
5
- export {
6
- PileupGetReducedFeatures,
7
- PileupGetVisibleModifications,
8
- PileupGetGlobalValueForTag,
9
- }
1
+ export { default as PileupGetReducedFeatures } from './methods/GetReducedFeatures'
2
+ export { default as PileupGetVisibleModifications } from './methods/GetVisibleModifications'
3
+ export { default as PileupGetGlobalValueForTag } from './methods/GetGlobalValueForTag'
@@ -1,11 +1,6 @@
1
1
  import { Theme } from '@mui/material/styles'
2
2
  import BoxRendererType, {
3
- RenderArgs,
4
- RenderArgsSerialized,
5
3
  RenderArgsDeserialized as BoxRenderArgsDeserialized,
6
- RenderResults,
7
- ResultsSerialized,
8
- ResultsDeserialized,
9
4
  } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'
10
5
  import { createJBrowseTheme } from '@jbrowse/core/ui'
11
6
  import {
@@ -74,11 +69,9 @@ function getColorBaseMap(theme: Theme) {
74
69
  }
75
70
 
76
71
  function getContrastBaseMap(theme: Theme) {
72
+ const map = getColorBaseMap(theme)
77
73
  return Object.fromEntries(
78
- Object.entries(getColorBaseMap(theme)).map(([key, value]) => [
79
- key,
80
- theme.palette.getContrastText(value),
81
- ]),
74
+ Object.entries(map).map(([k, v]) => [k, theme.palette.getContrastText(v)]),
82
75
  )
83
76
  }
84
77
 
@@ -191,13 +184,10 @@ export default class PileupRenderer extends BoxRendererType {
191
184
  }
192
185
  }
193
186
  }
187
+ const s = feature.get('start') - expansionBefore
188
+ const e = feature.get('end') + expansionAfter
194
189
 
195
- const [leftPx, rightPx] = bpSpanPx(
196
- feature.get('start') - expansionBefore,
197
- feature.get('end') + expansionAfter,
198
- region,
199
- bpPerPx,
200
- )
190
+ const [leftPx, rightPx] = bpSpanPx(s, e, region, bpPerPx)
201
191
 
202
192
  if (displayMode === 'compact') {
203
193
  heightPx /= 3
@@ -209,13 +199,7 @@ export default class PileupRenderer extends BoxRendererType {
209
199
  }`,
210
200
  )
211
201
  }
212
- const topPx = layout.addRect(
213
- feature.id(),
214
- feature.get('start') - expansionBefore,
215
- feature.get('end') + expansionAfter,
216
- heightPx,
217
- feature,
218
- )
202
+ const topPx = layout.addRect(feature.id(), s, e, heightPx, feature)
219
203
  if (topPx === null) {
220
204
  return null
221
205
  }
@@ -475,11 +459,10 @@ export default class PileupRenderer extends BoxRendererType {
475
459
 
476
460
  // probIndex applies across multiple modifications e.g.
477
461
  let probIndex = 0
478
- for (let i = 0; i < modifications.length; i++) {
479
- const { type, positions } = modifications[i]
462
+ for (const { type, positions } of modifications) {
480
463
  const col = modificationTagMap[type] || 'black'
481
464
 
482
- // @ts-ignore
465
+ // @ts-expect-error
483
466
  const base = Color(col)
484
467
  for (const readPos of getNextRefPos(cigarOps, positions)) {
485
468
  const r = start + readPos
@@ -660,6 +643,7 @@ export default class PileupRenderer extends BoxRendererType {
660
643
  charWidth,
661
644
  charHeight,
662
645
  defaultColor,
646
+ theme,
663
647
  canvasWidth,
664
648
  }: {
665
649
  ctx: CanvasRenderingContext2D
@@ -671,9 +655,9 @@ export default class PileupRenderer extends BoxRendererType {
671
655
  charHeight: number
672
656
  defaultColor: boolean
673
657
  canvasWidth: number
658
+ theme: Theme
674
659
  }) {
675
660
  const { config, bpPerPx, regions, colorBy, colorTagMap = {} } = renderArgs
676
-
677
661
  const { tag = '', type: colorType = '' } = colorBy || {}
678
662
  const { feature } = feat
679
663
  const region = regions[0]
@@ -734,30 +718,25 @@ export default class PileupRenderer extends BoxRendererType {
734
718
  }
735
719
  break
736
720
  }
737
- case 'insertSizeAndPairOrientation':
721
+ case 'insertSizeAndPairOrientation': {
738
722
  break
723
+ }
739
724
 
740
725
  case 'modifications':
741
- case 'methylation':
726
+ case 'methylation': {
742
727
  // this coloring is similar to igv.js, and is helpful to color negative
743
728
  // strand reads differently because their c-g will be flipped (e.g. g-c
744
729
  // read right to left)
745
- if (feature.get('flags') & 16) {
746
- ctx.fillStyle = '#c8dcc8'
747
- } else {
748
- ctx.fillStyle = '#c8c8c8'
749
- }
730
+ ctx.fillStyle = feature.get('flags') & 16 ? '#c8dcc8' : '#c8c8c8'
750
731
  break
732
+ }
751
733
 
752
- case 'normal':
753
- default:
754
- if (defaultColor) {
755
- // avoid a readConfObject call here
756
- ctx.fillStyle = '#c8c8c8'
757
- } else {
758
- ctx.fillStyle = readConfObject(config, 'color', { feature })
759
- }
734
+ default: {
735
+ ctx.fillStyle = defaultColor
736
+ ? 'lightgrey'
737
+ : readConfObject(config, 'color', { feature })
760
738
  break
739
+ }
761
740
  }
762
741
 
763
742
  this.drawRect(ctx, feat, renderArgs)
@@ -827,6 +806,7 @@ export default class PileupRenderer extends BoxRendererType {
827
806
  canvasWidth,
828
807
  drawSNPsMuted,
829
808
  drawIndels = true,
809
+ theme,
830
810
  }: {
831
811
  ctx: CanvasRenderingContext2D
832
812
  feat: LayoutFeature
@@ -841,6 +821,7 @@ export default class PileupRenderer extends BoxRendererType {
841
821
  charWidth: number
842
822
  charHeight: number
843
823
  canvasWidth: number
824
+ theme: Theme
844
825
  }) {
845
826
  const { Color, bpPerPx, regions } = renderArgs
846
827
  const { heightPx, topPx, feature } = feat
@@ -877,19 +858,20 @@ export default class PileupRenderer extends BoxRendererType {
877
858
 
878
859
  fillRect(
879
860
  ctx,
880
- leftPx,
861
+ Math.round(leftPx),
881
862
  topPx,
882
863
  widthPx,
883
864
  heightPx,
884
865
  canvasWidth,
885
- !mismatchAlpha
886
- ? baseColor
887
- : mismatch.qual !== undefined
888
- ? // @ts-ignore
889
- Color(baseColor)
890
- .alpha(Math.min(1, mismatch.qual / 50))
891
- .hsl()
892
- .string()
866
+
867
+ mismatchAlpha
868
+ ? mismatch.qual === undefined
869
+ ? baseColor
870
+ : // @ts-expect-error
871
+ Color(baseColor)
872
+ .alpha(Math.min(1, mismatch.qual / 50))
873
+ .hsl()
874
+ .string()
893
875
  : baseColor,
894
876
  )
895
877
  }
@@ -899,14 +881,14 @@ export default class PileupRenderer extends BoxRendererType {
899
881
  const contrastColor = drawSNPsMuted
900
882
  ? 'black'
901
883
  : contrastForBase[mismatch.base] || 'black'
902
- ctx.fillStyle = !mismatchAlpha
903
- ? contrastColor
904
- : mismatch.qual !== undefined
905
- ? // @ts-ignore
906
- Color(contrastColor)
907
- .alpha(Math.min(1, mismatch.qual / 50))
908
- .hsl()
909
- .string()
884
+ ctx.fillStyle = mismatchAlpha
885
+ ? mismatch.qual === undefined
886
+ ? contrastColor
887
+ : // @ts-expect-error
888
+ Color(contrastColor)
889
+ .alpha(Math.min(1, mismatch.qual / 50))
890
+ .hsl()
891
+ .string()
910
892
  : contrastColor
911
893
  ctx.fillText(
912
894
  mbase,
@@ -1167,6 +1149,7 @@ export default class PileupRenderer extends BoxRendererType {
1167
1149
  charWidth,
1168
1150
  charHeight,
1169
1151
  canvasWidth,
1152
+ theme,
1170
1153
  })
1171
1154
  this.drawMismatches({
1172
1155
  ctx,
@@ -1182,6 +1165,7 @@ export default class PileupRenderer extends BoxRendererType {
1182
1165
  colorForBase,
1183
1166
  contrastForBase,
1184
1167
  canvasWidth,
1168
+ theme,
1185
1169
  })
1186
1170
  if (showSoftClip) {
1187
1171
  this.drawSoftClipping({
@@ -1317,10 +1301,10 @@ export default class PileupRenderer extends BoxRendererType {
1317
1301
  }
1318
1302
  }
1319
1303
 
1320
- export type {
1321
- RenderArgs,
1322
- RenderArgsSerialized,
1323
- RenderResults,
1324
- ResultsSerialized,
1325
- ResultsDeserialized,
1326
- }
1304
+ export {
1305
+ type RenderArgs,
1306
+ type RenderResults,
1307
+ type RenderArgsSerialized,
1308
+ type ResultsSerialized,
1309
+ type ResultsDeserialized,
1310
+ } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'
@@ -159,10 +159,10 @@ function PileupRendering(props: {
159
159
  }
160
160
 
161
161
  function callMouseHandler(handlerName: string, event: React.MouseEvent) {
162
- // @ts-ignore
162
+ // @ts-expect-error
163
163
  // eslint-disable-next-line react/destructuring-assignment
164
164
  const featureHandler = props[`onFeature${handlerName}`]
165
- // @ts-ignore
165
+ // @ts-expect-error
166
166
  // eslint-disable-next-line react/destructuring-assignment
167
167
  const canvasHandler = props[`on${handlerName}`]
168
168
  if (featureHandler && featureIdUnderMouse) {
@@ -50,7 +50,7 @@ const PileupRenderer = ConfigurationSchema(
50
50
  type: 'number',
51
51
  description:
52
52
  'the minimum width in px for a pileup mismatch feature. use for increasing/decreasing mismatch marker widths when zoomed out, e.g. 0 or 1',
53
- defaultValue: 0.7,
53
+ defaultValue: 1,
54
54
  },
55
55
  /**
56
56
  * #slot
@@ -78,7 +78,7 @@ export const sortFeature = (
78
78
  const acode = bMismatch && bMismatch.base.toUpperCase()
79
79
  const bcode = aMismatch && aMismatch.base.toUpperCase()
80
80
  if (acode === bcode && acode === '*') {
81
- // @ts-ignore
81
+ // @ts-expect-error
82
82
  return aMismatch.length - bMismatch.length
83
83
  }
84
84
  return (
@@ -99,9 +99,10 @@ export const sortFeature = (
99
99
  }
100
100
 
101
101
  const sortedMap = new Map(
102
- featuresInCenterLine
103
- .concat(featuresOutsideCenter)
104
- .map(feature => [feature.id(), feature]),
102
+ [...featuresInCenterLine, ...featuresOutsideCenter].map(feature => [
103
+ feature.id(),
104
+ feature,
105
+ ]),
105
106
  )
106
107
 
107
108
  return sortedMap
@@ -35,6 +35,8 @@ interface SNPInfo {
35
35
  total: number
36
36
  }
37
37
 
38
+ const fudgeFactor = 0.6
39
+
38
40
  export default class SNPCoverageRenderer extends WiggleBaseRenderer {
39
41
  // note: the snps are drawn on linear scale even if the data is drawn in log
40
42
  // scape hence the two different scales being used
@@ -78,6 +80,7 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
78
80
  scaleType: 'linear',
79
81
  })
80
82
  const originY = getOrigin(scaleOpts.scaleType)
83
+ const originLinear = getOrigin('linear')
81
84
 
82
85
  const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold')
83
86
  const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts')
@@ -87,11 +90,9 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
87
90
  // get the y coordinate that we are plotting at, this can be log scale
88
91
  const toY = (n: number) => height - (viewScale(n) || 0) + offset
89
92
  const toHeight = (n: number) => toY(originY) - toY(n)
90
-
91
- const indicatorToY = (n: number) =>
92
- height - (indicatorViewScale(n) || 0) + offset
93
- const indicatorToHeight = (n: number) =>
94
- indicatorToY(getOrigin('linear')) - indicatorToY(n)
93
+ // used specifically for indicator
94
+ const toY2 = (n: number) => height - (indicatorViewScale(n) || 0) + offset
95
+ const toHeight2 = (n: number) => toY2(originLinear) - toY2(n)
95
96
 
96
97
  const { bases } = theme.palette
97
98
  const colorForBase: { [key: string]: string } = {
@@ -105,7 +106,6 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
105
106
  hardclip: 'red',
106
107
  meth: 'red',
107
108
  unmeth: 'blue',
108
- ref: 'lightgrey',
109
109
  }
110
110
 
111
111
  const feats = [...features.values()]
@@ -118,7 +118,7 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
118
118
  for (let i = 0; i < coverage.length; i++) {
119
119
  const feature = coverage[i]
120
120
  const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)
121
- const w = rightPx - leftPx + 0.3
121
+ const w = rightPx - leftPx + fudgeFactor
122
122
  const score = feature.get('score') as number
123
123
  ctx.fillRect(leftPx, toY(score), w, toHeight(score))
124
124
  }
@@ -144,7 +144,7 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
144
144
 
145
145
  const score = feature.get('score') as number
146
146
  const snpinfo = feature.get('snpinfo') as SNPInfo
147
- const w = Math.max(rightPx - leftPx + 0.3, 1)
147
+ const w = Math.max(rightPx - leftPx + fudgeFactor, 1)
148
148
  const totalScore = snpinfo.total
149
149
  const keys = Object.keys(snpinfo.cov).sort()
150
150
 
@@ -160,7 +160,7 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
160
160
  const height = toHeight(score)
161
161
  const bottom = toY(score) + height
162
162
  ctx.fillRect(
163
- leftPx,
163
+ Math.round(leftPx),
164
164
  bottom - ((total + curr) / score) * height,
165
165
  w,
166
166
  (total / score) * height,
@@ -175,12 +175,13 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
175
175
  for (let i = 0; i < interbaseEvents.length; i++) {
176
176
  const base = interbaseEvents[i]
177
177
  const { total } = snpinfo.noncov[base]
178
+ const r = 0.6
178
179
  ctx.fillStyle = colorForBase[base]
179
180
  ctx.fillRect(
180
- leftPx - 0.6 + extraHorizontallyFlippedOffset,
181
- indicatorHeight + indicatorToHeight(curr),
182
- 1.2,
183
- indicatorToHeight(total),
181
+ leftPx - r + extraHorizontallyFlippedOffset,
182
+ indicatorHeight + toHeight2(curr),
183
+ r * 2,
184
+ toHeight2(total),
184
185
  )
185
186
  curr += total
186
187
  }
package/src/index.ts CHANGED
@@ -14,12 +14,7 @@ import AlignmentsTrackF from './AlignmentsTrack'
14
14
  import AlignmentsFeatureWidgetF from './AlignmentsFeatureDetail'
15
15
  import PileupRPCMethodsF from './PileupRPC'
16
16
  import GuessAlignmentsTypesF from './GuessAlignmentsTypes'
17
- import LinearPileupDisplayF, {
18
- linearPileupDisplayStateModelFactory,
19
- linearPileupDisplayConfigSchemaFactory,
20
- } from './LinearPileupDisplay'
21
- import { LinearPileupDisplayModel } from './LinearPileupDisplay/model'
22
- import * as MismatchParser from './MismatchParser'
17
+ import LinearPileupDisplayF from './LinearPileupDisplay'
23
18
 
24
19
  export default class AlignmentsPlugin extends Plugin {
25
20
  name = 'AlignmentsPlugin'
@@ -46,8 +41,8 @@ export default class AlignmentsPlugin extends Plugin {
46
41
  }
47
42
 
48
43
  export {
49
- linearPileupDisplayConfigSchemaFactory,
50
44
  linearPileupDisplayStateModelFactory,
51
- MismatchParser,
52
- }
53
- export type { LinearPileupDisplayModel }
45
+ linearPileupDisplayConfigSchemaFactory,
46
+ } from './LinearPileupDisplay'
47
+ export { type LinearPileupDisplayModel } from './LinearPileupDisplay/model'
48
+ export * as MismatchParser from './MismatchParser'