@jbrowse/plugin-alignments 2.4.1 → 2.5.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 (193) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +4 -5
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +88 -126
  3. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
  4. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.d.ts +5 -0
  5. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js +44 -0
  6. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js.map +1 -0
  7. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.d.ts +5 -0
  8. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.js +37 -0
  9. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.js.map +1 -0
  10. package/dist/AlignmentsFeatureDetail/index.d.ts +5 -2
  11. package/dist/AlignmentsFeatureDetail/util.d.ts +8 -0
  12. package/dist/AlignmentsFeatureDetail/util.js +27 -0
  13. package/dist/AlignmentsFeatureDetail/util.js.map +1 -0
  14. package/dist/AlignmentsTrack/configSchemaF.d.ts +74 -0
  15. package/dist/AlignmentsTrack/configSchemaF.js +19 -0
  16. package/dist/AlignmentsTrack/configSchemaF.js.map +1 -0
  17. package/dist/AlignmentsTrack/index.js +2 -15
  18. package/dist/AlignmentsTrack/index.js.map +1 -1
  19. package/dist/BamAdapter/BamAdapter.d.ts +1 -1
  20. package/dist/BamAdapter/BamAdapter.js +2 -2
  21. package/dist/BamAdapter/BamAdapter.js.map +1 -1
  22. package/dist/BamAdapter/configSchema.d.ts +50 -1
  23. package/dist/CramAdapter/CramAdapter.d.ts +1 -1
  24. package/dist/CramAdapter/CramAdapter.js +1 -1
  25. package/dist/CramAdapter/CramAdapter.js.map +1 -1
  26. package/dist/CramAdapter/CramTestAdapters.js +2 -2
  27. package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
  28. package/dist/CramAdapter/configSchema.d.ts +40 -1
  29. package/dist/HtsgetBamAdapter/configSchema.d.ts +26 -1
  30. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +0 -1
  31. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +2 -2
  32. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  33. package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +39 -1
  34. package/dist/LinearAlignmentsDisplay/models/model.d.ts +8 -4
  35. package/dist/LinearAlignmentsDisplay/models/model.js +7 -3
  36. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
  37. package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +0 -1
  38. package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +0 -1
  39. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +0 -1
  40. package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +0 -1
  41. package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +0 -1
  42. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +3 -5
  43. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -1
  44. package/dist/LinearPileupDisplay/components/SortByTag.d.ts +0 -1
  45. package/dist/LinearPileupDisplay/configSchema.d.ts +57 -1
  46. package/dist/LinearPileupDisplay/model.d.ts +109 -51
  47. package/dist/LinearPileupDisplay/model.js +21 -24
  48. package/dist/LinearPileupDisplay/model.js.map +1 -1
  49. package/dist/LinearReadArcsDisplay/components/ReactComponent.d.ts +0 -1
  50. package/dist/LinearReadArcsDisplay/configSchema.d.ts +62 -1
  51. package/dist/LinearReadArcsDisplay/drawFeats.js +2 -2
  52. package/dist/LinearReadArcsDisplay/drawFeats.js.map +1 -1
  53. package/dist/LinearReadArcsDisplay/model.d.ts +82 -33
  54. package/dist/LinearReadCloudDisplay/components/ReactComponent.d.ts +0 -1
  55. package/dist/LinearReadCloudDisplay/configSchema.d.ts +50 -1
  56. package/dist/LinearReadCloudDisplay/drawFeats.d.ts +2 -0
  57. package/dist/LinearReadCloudDisplay/drawFeats.js +4 -4
  58. package/dist/LinearReadCloudDisplay/drawFeats.js.map +1 -1
  59. package/dist/LinearReadCloudDisplay/model.d.ts +69 -30
  60. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +0 -1
  61. package/dist/LinearSNPCoverageDisplay/models/configSchema.d.ts +79 -1
  62. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +52 -27
  63. package/dist/LinearSNPCoverageDisplay/models/model.js +1 -1
  64. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  65. package/dist/MismatchParser/index.js +2 -2
  66. package/dist/MismatchParser/index.js.map +1 -1
  67. package/dist/PileupRenderer/PileupLayoutSession.d.ts +1 -1
  68. package/dist/PileupRenderer/PileupRenderer.d.ts +1 -1
  69. package/dist/PileupRenderer/PileupRenderer.js +10 -1
  70. package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
  71. package/dist/PileupRenderer/configSchema.d.ts +87 -1
  72. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +1 -1
  73. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +2 -2
  74. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  75. package/dist/SNPCoverageAdapter/configSchema.d.ts +10 -1
  76. package/dist/SNPCoverageAdapter/generateCoverageBins.js +50 -46
  77. package/dist/SNPCoverageAdapter/generateCoverageBins.js.map +1 -1
  78. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +1 -1
  79. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  80. package/dist/SNPCoverageRenderer/configSchema.d.ts +42 -1
  81. package/dist/shared/FilterByTag.d.ts +0 -1
  82. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +4 -5
  83. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +88 -126
  84. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
  85. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.d.ts +5 -0
  86. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js +38 -0
  87. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js.map +1 -0
  88. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.d.ts +5 -0
  89. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.js +31 -0
  90. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.js.map +1 -0
  91. package/esm/AlignmentsFeatureDetail/index.d.ts +5 -2
  92. package/esm/AlignmentsFeatureDetail/util.d.ts +8 -0
  93. package/esm/AlignmentsFeatureDetail/util.js +22 -0
  94. package/esm/AlignmentsFeatureDetail/util.js.map +1 -0
  95. package/esm/AlignmentsTrack/configSchemaF.d.ts +74 -0
  96. package/esm/AlignmentsTrack/configSchemaF.js +16 -0
  97. package/esm/AlignmentsTrack/configSchemaF.js.map +1 -0
  98. package/esm/AlignmentsTrack/index.js +3 -16
  99. package/esm/AlignmentsTrack/index.js.map +1 -1
  100. package/esm/BamAdapter/BamAdapter.d.ts +1 -1
  101. package/esm/BamAdapter/BamAdapter.js +2 -2
  102. package/esm/BamAdapter/BamAdapter.js.map +1 -1
  103. package/esm/BamAdapter/configSchema.d.ts +50 -1
  104. package/esm/CramAdapter/CramAdapter.d.ts +1 -1
  105. package/esm/CramAdapter/CramAdapter.js +1 -1
  106. package/esm/CramAdapter/CramAdapter.js.map +1 -1
  107. package/esm/CramAdapter/CramTestAdapters.js +1 -1
  108. package/esm/CramAdapter/CramTestAdapters.js.map +1 -1
  109. package/esm/CramAdapter/configSchema.d.ts +40 -1
  110. package/esm/HtsgetBamAdapter/configSchema.d.ts +26 -1
  111. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +0 -1
  112. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +2 -2
  113. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
  114. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +39 -1
  115. package/esm/LinearAlignmentsDisplay/models/model.d.ts +8 -4
  116. package/esm/LinearAlignmentsDisplay/models/model.js +7 -3
  117. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
  118. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +0 -1
  119. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +0 -1
  120. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +0 -1
  121. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +0 -1
  122. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +0 -1
  123. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +3 -5
  124. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -1
  125. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +0 -1
  126. package/esm/LinearPileupDisplay/configSchema.d.ts +57 -1
  127. package/esm/LinearPileupDisplay/model.d.ts +109 -51
  128. package/esm/LinearPileupDisplay/model.js +21 -24
  129. package/esm/LinearPileupDisplay/model.js.map +1 -1
  130. package/esm/LinearReadArcsDisplay/components/ReactComponent.d.ts +0 -1
  131. package/esm/LinearReadArcsDisplay/configSchema.d.ts +62 -1
  132. package/esm/LinearReadArcsDisplay/drawFeats.js +2 -2
  133. package/esm/LinearReadArcsDisplay/drawFeats.js.map +1 -1
  134. package/esm/LinearReadArcsDisplay/model.d.ts +82 -33
  135. package/esm/LinearReadCloudDisplay/components/ReactComponent.d.ts +0 -1
  136. package/esm/LinearReadCloudDisplay/configSchema.d.ts +50 -1
  137. package/esm/LinearReadCloudDisplay/drawFeats.d.ts +2 -0
  138. package/esm/LinearReadCloudDisplay/drawFeats.js +4 -4
  139. package/esm/LinearReadCloudDisplay/drawFeats.js.map +1 -1
  140. package/esm/LinearReadCloudDisplay/model.d.ts +69 -30
  141. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +0 -1
  142. package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +79 -1
  143. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +52 -27
  144. package/esm/LinearSNPCoverageDisplay/models/model.js +1 -1
  145. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  146. package/esm/MismatchParser/index.js +2 -2
  147. package/esm/MismatchParser/index.js.map +1 -1
  148. package/esm/PileupRenderer/PileupLayoutSession.d.ts +1 -1
  149. package/esm/PileupRenderer/PileupRenderer.d.ts +1 -1
  150. package/esm/PileupRenderer/PileupRenderer.js +10 -1
  151. package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
  152. package/esm/PileupRenderer/configSchema.d.ts +87 -1
  153. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +1 -1
  154. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +2 -2
  155. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  156. package/esm/SNPCoverageAdapter/configSchema.d.ts +10 -1
  157. package/esm/SNPCoverageAdapter/generateCoverageBins.js +50 -46
  158. package/esm/SNPCoverageAdapter/generateCoverageBins.js.map +1 -1
  159. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +1 -1
  160. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  161. package/esm/SNPCoverageRenderer/configSchema.d.ts +42 -1
  162. package/esm/shared/FilterByTag.d.ts +0 -1
  163. package/package.json +2 -2
  164. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +109 -183
  165. package/src/AlignmentsFeatureDetail/AlignmentsFeatureFlags.tsx +62 -0
  166. package/src/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.tsx +51 -0
  167. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.tsx.snap +4 -4
  168. package/src/AlignmentsFeatureDetail/util.ts +27 -0
  169. package/src/AlignmentsTrack/configSchemaF.ts +22 -0
  170. package/src/AlignmentsTrack/index.ts +3 -24
  171. package/src/BamAdapter/BamAdapter.ts +5 -2
  172. package/src/CramAdapter/CramAdapter.ts +4 -1
  173. package/src/CramAdapter/CramTestAdapters.ts +1 -1
  174. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +2 -2
  175. package/src/LinearAlignmentsDisplay/models/model.tsx +11 -3
  176. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +3 -5
  177. package/src/LinearPileupDisplay/model.ts +38 -36
  178. package/src/LinearReadArcsDisplay/drawFeats.ts +2 -2
  179. package/src/LinearReadCloudDisplay/drawFeats.ts +6 -5
  180. package/src/LinearSNPCoverageDisplay/models/model.ts +1 -1
  181. package/src/MismatchParser/index.ts +2 -2
  182. package/src/PileupRenderer/PileupLayoutSession.ts +1 -1
  183. package/src/PileupRenderer/PileupRenderer.ts +15 -6
  184. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -2
  185. package/src/SNPCoverageAdapter/generateCoverageBins.ts +58 -55
  186. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +1 -1
  187. package/dist/NestedFrequencyTable.d.ts +0 -14
  188. package/dist/NestedFrequencyTable.js +0 -94
  189. package/dist/NestedFrequencyTable.js.map +0 -1
  190. package/esm/NestedFrequencyTable.d.ts +0 -14
  191. package/esm/NestedFrequencyTable.js +0 -91
  192. package/esm/NestedFrequencyTable.js.map +0 -1
  193. package/src/NestedFrequencyTable.ts +0 -113
@@ -1,91 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- // see perf results on object.keys vs for-in loop
3
- // https://jsperf.com/object-keys-vs-hasownproperty/55
4
- export default class NestedFrequencyTable {
5
- constructor(initialData = {}) {
6
- this.categories = { ...initialData };
7
- }
8
- // get the sum of all the category counts
9
- total() {
10
- // calculate total if necessary
11
- let t = 0;
12
- for (const k in this.categories) {
13
- const v = this.categories[k];
14
- t += v.total ? v.total() : v;
15
- }
16
- return t;
17
- }
18
- // decrement the count for the given category
19
- decrement(slotName, amount) {
20
- if (!amount) {
21
- amount = 1;
22
- }
23
- slotName = slotName ? slotName.toString() : 'default';
24
- if (this.categories[slotName]) {
25
- this.categories[slotName] = Math.max(0, this.categories[slotName] - amount);
26
- return this.categories[slotName];
27
- }
28
- return 0;
29
- }
30
- // increment the count for the given category
31
- increment(slotName, amount) {
32
- if (!amount) {
33
- amount = 1;
34
- }
35
- slotName = slotName ? slotName.toString() : 'default';
36
- this.categories[slotName] = (this.categories[slotName] || 0) + amount;
37
- return this.categories[slotName];
38
- }
39
- // get the value of the given category. may be a number or a
40
- // frequency table.
41
- get(slotName) {
42
- return this.categories[slotName] || 0;
43
- }
44
- // get a given category as a frequency table
45
- getNested(path) {
46
- if (typeof path === 'string') {
47
- path = path.split('/');
48
- }
49
- if (path.length === 0) {
50
- return this;
51
- }
52
- const slotName = path[0].toString();
53
- let slot = this.categories[slotName];
54
- if (!slot || !slot.categories) {
55
- this.categories[slotName] = new NestedFrequencyTable(slot ? { default: slot + 0 } : {});
56
- }
57
- slot = this.categories[slotName];
58
- if (path.length > 1) {
59
- return slot.getNested(path.slice(1));
60
- }
61
- return slot;
62
- }
63
- toString() {
64
- return this.total()
65
- .toPrecision(6)
66
- .toString()
67
- .replace(/\.?0+$/, '');
68
- }
69
- valueOf() {
70
- return this.total();
71
- }
72
- // iterate through the categories and counts, call like:
73
- //
74
- // tbl.forEach( function( count, categoryName ) {
75
- // // do something
76
- // }, this );
77
- //
78
- forEach(func, ctx) {
79
- if (ctx) {
80
- for (const slotName in this.categories) {
81
- func.call(ctx, this.categories[slotName], slotName);
82
- }
83
- }
84
- else {
85
- for (const slotName in this.categories) {
86
- func(this.categories[slotName], slotName);
87
- }
88
- }
89
- }
90
- }
91
- //# sourceMappingURL=NestedFrequencyTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NestedFrequencyTable.js","sourceRoot":"","sources":["../src/NestedFrequencyTable.ts"],"names":[],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- // see perf results on object.keys vs for-in loop
3
- // https://jsperf.com/object-keys-vs-hasownproperty/55
4
- export default class NestedFrequencyTable {
5
- public categories: { [key: string]: any }
6
-
7
- constructor(initialData = {}) {
8
- this.categories = { ...initialData }
9
- }
10
-
11
- // get the sum of all the category counts
12
- total() {
13
- // calculate total if necessary
14
- let t = 0
15
-
16
- for (const k in this.categories) {
17
- const v = this.categories[k]
18
- t += v.total ? v.total() : v
19
- }
20
-
21
- return t
22
- }
23
-
24
- // decrement the count for the given category
25
- decrement(slotName: string, amount: number) {
26
- if (!amount) {
27
- amount = 1
28
- }
29
-
30
- slotName = slotName ? slotName.toString() : 'default'
31
-
32
- if (this.categories[slotName]) {
33
- this.categories[slotName] = Math.max(
34
- 0,
35
- this.categories[slotName] - amount,
36
- )
37
- return this.categories[slotName]
38
- }
39
- return 0
40
- }
41
-
42
- // increment the count for the given category
43
- increment(slotName: string, amount: number) {
44
- if (!amount) {
45
- amount = 1
46
- }
47
-
48
- slotName = slotName ? slotName.toString() : 'default'
49
-
50
- this.categories[slotName] = (this.categories[slotName] || 0) + amount
51
- return this.categories[slotName]
52
- }
53
-
54
- // get the value of the given category. may be a number or a
55
- // frequency table.
56
- get(slotName: string) {
57
- return this.categories[slotName] || 0
58
- }
59
-
60
- // get a given category as a frequency table
61
- getNested(path: string | string[]) {
62
- if (typeof path === 'string') {
63
- path = path.split('/')
64
- }
65
-
66
- if (path.length === 0) {
67
- return this
68
- }
69
-
70
- const slotName = path[0].toString()
71
- let slot = this.categories[slotName]
72
- if (!slot || !slot.categories) {
73
- this.categories[slotName] = new NestedFrequencyTable(
74
- slot ? { default: slot + 0 } : {},
75
- )
76
- }
77
- slot = this.categories[slotName]
78
-
79
- if (path.length > 1) {
80
- return slot.getNested(path.slice(1))
81
- }
82
- return slot
83
- }
84
-
85
- toString() {
86
- return this.total()
87
- .toPrecision(6)
88
- .toString()
89
- .replace(/\.?0+$/, '')
90
- }
91
-
92
- valueOf() {
93
- return this.total()
94
- }
95
-
96
- // iterate through the categories and counts, call like:
97
- //
98
- // tbl.forEach( function( count, categoryName ) {
99
- // // do something
100
- // }, this );
101
- //
102
- forEach(func: Function, ctx: any) {
103
- if (ctx) {
104
- for (const slotName in this.categories) {
105
- func.call(ctx, this.categories[slotName], slotName)
106
- }
107
- } else {
108
- for (const slotName in this.categories) {
109
- func(this.categories[slotName], slotName)
110
- }
111
- }
112
- }
113
- }