@jbrowse/plugin-alignments 1.7.3 → 1.7.6
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.
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +26 -26
- package/dist/AlignmentsFeatureDetail/index.js +3 -3
- package/dist/AlignmentsFeatureDetail/index.test.js +2 -2
- package/dist/AlignmentsTrack/index.js +2 -2
- package/dist/BamAdapter/BamAdapter.js +31 -31
- package/dist/BamAdapter/BamAdapter.test.js +10 -10
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +6 -6
- package/dist/BamAdapter/MismatchParser.js +6 -6
- package/dist/BamAdapter/MismatchParser.test.js +2 -2
- package/dist/BamAdapter/configSchema.js +2 -2
- package/dist/BamAdapter/index.js +6 -6
- package/dist/CramAdapter/CramAdapter.js +31 -31
- package/dist/CramAdapter/CramAdapter.test.js +10 -10
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +6 -6
- package/dist/CramAdapter/CramTestAdapters.js +18 -18
- package/dist/CramAdapter/configSchema.js +2 -2
- package/dist/CramAdapter/index.js +6 -6
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +9 -9
- package/dist/HtsgetBamAdapter/configSchema.js +2 -2
- package/dist/HtsgetBamAdapter/index.js +6 -6
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +8 -8
- package/dist/LinearAlignmentsDisplay/index.js +5 -5
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +2 -2
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +11 -11
- package/dist/LinearAlignmentsDisplay/models/model.js +15 -15
- package/dist/LinearPileupDisplay/components/ColorByModifications.js +18 -18
- package/dist/LinearPileupDisplay/components/ColorByTag.js +11 -11
- package/dist/LinearPileupDisplay/components/FilterByTag.js +26 -26
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +4 -4
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +12 -12
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js +10 -10
- package/dist/LinearPileupDisplay/components/SortByTag.js +10 -10
- package/dist/LinearPileupDisplay/configSchema.js +5 -7
- package/dist/LinearPileupDisplay/configSchema.test.js +12 -12
- package/dist/LinearPileupDisplay/index.js +4 -4
- package/dist/LinearPileupDisplay/model.d.ts +2 -3
- package/dist/LinearPileupDisplay/model.js +189 -63
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +10 -10
- package/dist/LinearSNPCoverageDisplay/index.js +4 -4
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +1 -1
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +7 -7
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/models/model.js +11 -11
- package/dist/NestedFrequencyTable.js +7 -7
- package/dist/PileupRPC/rpcMethods.js +23 -23
- package/dist/PileupRenderer/PileupLayoutSession.js +8 -8
- package/dist/PileupRenderer/PileupRenderer.d.ts +2 -3
- package/dist/PileupRenderer/PileupRenderer.js +40 -40
- package/dist/PileupRenderer/components/PileupRendering.js +13 -13
- package/dist/PileupRenderer/components/PileupRendering.test.js +2 -2
- package/dist/PileupRenderer/configSchema.js +2 -2
- package/dist/PileupRenderer/index.js +4 -4
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +22 -22
- package/dist/SNPCoverageAdapter/configSchema.js +2 -2
- package/dist/SNPCoverageAdapter/index.js +6 -6
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +12 -12
- package/dist/SNPCoverageRenderer/configSchema.js +2 -2
- package/dist/SNPCoverageRenderer/index.js +3 -3
- package/dist/index.js +10 -10
- package/dist/index.test.js +2 -2
- package/dist/shared.js +5 -5
- package/dist/util.d.ts +1 -1
- package/dist/util.js +3 -3
- package/package.json +4 -5
- package/src/LinearPileupDisplay/configSchema.ts +1 -4
- package/src/LinearPileupDisplay/model.ts +96 -19
- package/src/PileupRenderer/PileupRenderer.tsx +6 -2
package/dist/util.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ export declare const orientationTypes: {
|
|
|
14
14
|
[key: string]: string;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
-
export declare function getColorWGBS(strand: number, base: string): "#
|
|
17
|
+
export declare function getColorWGBS(strand: number, base: string): "#888" | "#f00" | "#00f";
|
|
18
18
|
export declare function fetchSequence(region: AugmentedRegion, adapter: BaseFeatureDataAdapter): Promise<any>;
|
|
19
19
|
export declare function shouldFetchReferenceSequence(type?: string): boolean;
|
package/dist/util.js
CHANGED
|
@@ -22,7 +22,7 @@ var _operators = require("rxjs/operators");
|
|
|
22
22
|
|
|
23
23
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24
24
|
|
|
25
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2
|
|
25
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
26
|
|
|
27
27
|
// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and
|
|
28
28
|
// BAM does not
|
|
@@ -101,11 +101,11 @@ function fetchSequence(_x, _x2) {
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
function _fetchSequence() {
|
|
104
|
-
_fetchSequence = (0, _asyncToGenerator2
|
|
104
|
+
_fetchSequence = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(region, adapter) {
|
|
105
105
|
var _feats$;
|
|
106
106
|
|
|
107
107
|
var end, originalRefName, refName, feats;
|
|
108
|
-
return _regenerator
|
|
108
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
109
109
|
while (1) {
|
|
110
110
|
switch (_context.prev = _context.next) {
|
|
111
111
|
case 0:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-alignments",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.6",
|
|
4
4
|
"description": "JBrowse 2 alignments adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -33,15 +33,14 @@
|
|
|
33
33
|
"useSrc": "node ../../scripts/useSrc.js"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
+
"@babel/runtime": "^7.17.9",
|
|
36
37
|
"@gmod/bam": "^1.1.15",
|
|
37
38
|
"@gmod/cram": "^1.6.1",
|
|
38
39
|
"@material-ui/icons": "^4.9.1",
|
|
39
|
-
"abortable-promise-cache": "^1.5.0",
|
|
40
40
|
"color": "^3.1.2",
|
|
41
41
|
"copy-to-clipboard": "^3.3.1",
|
|
42
42
|
"fast-deep-equal": "^3.1.3",
|
|
43
|
-
"generic-filehandle": "^2.2.2"
|
|
44
|
-
"json-stable-stringify": "^1.0.1"
|
|
43
|
+
"generic-filehandle": "^2.2.2"
|
|
45
44
|
},
|
|
46
45
|
"peerDependencies": {
|
|
47
46
|
"@jbrowse/core": "^1.0.0",
|
|
@@ -58,5 +57,5 @@
|
|
|
58
57
|
"publishConfig": {
|
|
59
58
|
"access": "public"
|
|
60
59
|
},
|
|
61
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "dbd73f99714e395cf20877d5e05d26855857a0e3"
|
|
62
61
|
}
|
|
@@ -6,8 +6,6 @@ import PluginManager from '@jbrowse/core/PluginManager'
|
|
|
6
6
|
function PileupConfigFactory(pluginManager: PluginManager) {
|
|
7
7
|
const PileupRendererConfigSchema =
|
|
8
8
|
pluginManager.getRendererType('PileupRenderer').configSchema
|
|
9
|
-
const SvgFeatureRendererConfigSchema =
|
|
10
|
-
pluginManager.getRendererType('SvgFeatureRenderer').configSchema
|
|
11
9
|
|
|
12
10
|
// modify config schema to take in a sub coverage display
|
|
13
11
|
return ConfigurationSchema(
|
|
@@ -15,12 +13,11 @@ function PileupConfigFactory(pluginManager: PluginManager) {
|
|
|
15
13
|
{
|
|
16
14
|
defaultRendering: {
|
|
17
15
|
type: 'stringEnum',
|
|
18
|
-
model: types.enumeration('Rendering', ['pileup'
|
|
16
|
+
model: types.enumeration('Rendering', ['pileup']),
|
|
19
17
|
defaultValue: 'pileup',
|
|
20
18
|
},
|
|
21
19
|
renderers: ConfigurationSchema('RenderersConfiguration', {
|
|
22
20
|
PileupRenderer: PileupRendererConfigSchema,
|
|
23
|
-
SvgFeatureRenderer: SvgFeatureRendererConfigSchema,
|
|
24
21
|
}),
|
|
25
22
|
renderer: '',
|
|
26
23
|
maxFeatureScreenDensity: {
|
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
getSession,
|
|
10
10
|
isSessionModelWithWidgets,
|
|
11
11
|
getContainingView,
|
|
12
|
+
SimpleFeature,
|
|
13
|
+
Feature,
|
|
12
14
|
} from '@jbrowse/core/util'
|
|
13
15
|
|
|
14
16
|
import VisibilityIcon from '@material-ui/icons/Visibility'
|
|
@@ -19,7 +21,6 @@ import {
|
|
|
19
21
|
} from '@jbrowse/plugin-linear-genome-view'
|
|
20
22
|
import { cast, types, addDisposer, getEnv, Instance } from 'mobx-state-tree'
|
|
21
23
|
import copy from 'copy-to-clipboard'
|
|
22
|
-
import { Feature } from '@jbrowse/core/util/simpleFeature'
|
|
23
24
|
import MenuOpenIcon from '@material-ui/icons/MenuOpen'
|
|
24
25
|
import SortIcon from '@material-ui/icons/Sort'
|
|
25
26
|
import PaletteIcon from '@material-ui/icons/Palette'
|
|
@@ -158,8 +159,15 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
158
159
|
async () => {
|
|
159
160
|
try {
|
|
160
161
|
const { rpcManager } = getSession(self)
|
|
161
|
-
const { sortedBy, colorBy } = self
|
|
162
162
|
const view = getContainingView(self) as LGV
|
|
163
|
+
const {
|
|
164
|
+
sortedBy,
|
|
165
|
+
colorBy,
|
|
166
|
+
parentTrack,
|
|
167
|
+
adapterConfig,
|
|
168
|
+
rendererType,
|
|
169
|
+
} = self
|
|
170
|
+
const { staticBlocks, bpPerPx } = view
|
|
163
171
|
|
|
164
172
|
// continually generate the vc pairing, set and rerender if any
|
|
165
173
|
// new values seen
|
|
@@ -167,44 +175,46 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
167
175
|
const uniqueTagSet = await getUniqueTagValues(
|
|
168
176
|
self,
|
|
169
177
|
colorBy,
|
|
170
|
-
|
|
178
|
+
staticBlocks,
|
|
171
179
|
)
|
|
172
180
|
self.updateColorTagMap(uniqueTagSet)
|
|
173
181
|
}
|
|
174
182
|
|
|
175
183
|
if (colorBy?.type === 'modifications') {
|
|
176
|
-
const
|
|
184
|
+
const adapter = getConf(parentTrack, ['adapter'])
|
|
185
|
+
self.updateModificationColorMap(
|
|
177
186
|
await getUniqueModificationValues(
|
|
178
187
|
self,
|
|
179
|
-
|
|
188
|
+
adapter,
|
|
180
189
|
colorBy,
|
|
181
|
-
|
|
182
|
-
)
|
|
183
|
-
|
|
190
|
+
staticBlocks,
|
|
191
|
+
),
|
|
192
|
+
)
|
|
184
193
|
}
|
|
185
194
|
|
|
186
195
|
if (sortedBy) {
|
|
187
196
|
const { pos, refName, assemblyName } = sortedBy
|
|
188
197
|
|
|
189
|
-
const region = {
|
|
190
|
-
start: pos,
|
|
191
|
-
end: pos + 1,
|
|
192
|
-
refName,
|
|
193
|
-
assemblyName,
|
|
194
|
-
}
|
|
195
|
-
|
|
196
198
|
// render just the sorted region first
|
|
197
199
|
await self.rendererType.renderInClient(rpcManager, {
|
|
198
200
|
assemblyName,
|
|
199
|
-
regions: [
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
regions: [
|
|
202
|
+
{
|
|
203
|
+
start: pos,
|
|
204
|
+
end: pos + 1,
|
|
205
|
+
refName,
|
|
206
|
+
assemblyName,
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
adapterConfig: adapterConfig,
|
|
210
|
+
rendererType: rendererType.name,
|
|
202
211
|
sessionId: getRpcSessionId(self),
|
|
212
|
+
layoutId: view.id,
|
|
203
213
|
timeout: 1000000,
|
|
204
214
|
...self.renderProps(),
|
|
205
215
|
})
|
|
206
216
|
self.setReady(true)
|
|
207
|
-
self.setCurrBpPerPx(
|
|
217
|
+
self.setCurrBpPerPx(bpPerPx)
|
|
208
218
|
} else {
|
|
209
219
|
self.setReady(true)
|
|
210
220
|
}
|
|
@@ -404,6 +414,73 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
404
414
|
modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),
|
|
405
415
|
showSoftClip: self.showSoftClipping,
|
|
406
416
|
config: self.rendererConfig,
|
|
417
|
+
async onFeatureClick(_: unknown, featureId: string | undefined) {
|
|
418
|
+
const session = getSession(self)
|
|
419
|
+
const { rpcManager } = session
|
|
420
|
+
try {
|
|
421
|
+
const f = featureId || self.featureIdUnderMouse
|
|
422
|
+
if (!f) {
|
|
423
|
+
self.clearFeatureSelection()
|
|
424
|
+
} else {
|
|
425
|
+
const sessionId = getRpcSessionId(self)
|
|
426
|
+
const { feature } = (await rpcManager.call(
|
|
427
|
+
sessionId,
|
|
428
|
+
'CoreGetFeatureDetails',
|
|
429
|
+
{
|
|
430
|
+
featureId: f,
|
|
431
|
+
sessionId,
|
|
432
|
+
layoutId: getContainingView(self).id,
|
|
433
|
+
rendererType: 'PileupRenderer',
|
|
434
|
+
},
|
|
435
|
+
)) as { feature: unknown }
|
|
436
|
+
|
|
437
|
+
if (feature) {
|
|
438
|
+
// @ts-ignore
|
|
439
|
+
self.selectFeature(new SimpleFeature(feature))
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
} catch (e) {
|
|
443
|
+
console.error(e)
|
|
444
|
+
session.notify(`${e}`)
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
onClick() {
|
|
448
|
+
self.clearFeatureSelection()
|
|
449
|
+
},
|
|
450
|
+
// similar to click but opens a menu with further options
|
|
451
|
+
async onFeatureContextMenu(
|
|
452
|
+
_: unknown,
|
|
453
|
+
featureId: string | undefined,
|
|
454
|
+
) {
|
|
455
|
+
const session = getSession(self)
|
|
456
|
+
const { rpcManager } = session
|
|
457
|
+
try {
|
|
458
|
+
const f = featureId || self.featureIdUnderMouse
|
|
459
|
+
if (!f) {
|
|
460
|
+
self.clearFeatureSelection()
|
|
461
|
+
} else {
|
|
462
|
+
const sessionId = getRpcSessionId(self)
|
|
463
|
+
const { feature } = (await rpcManager.call(
|
|
464
|
+
sessionId,
|
|
465
|
+
'CoreGetFeatureDetails',
|
|
466
|
+
{
|
|
467
|
+
featureId: f,
|
|
468
|
+
sessionId,
|
|
469
|
+
layoutId: getContainingView(self).id,
|
|
470
|
+
rendererType: 'PileupRenderer',
|
|
471
|
+
},
|
|
472
|
+
)) as { feature: unknown }
|
|
473
|
+
|
|
474
|
+
if (feature) {
|
|
475
|
+
// @ts-ignore
|
|
476
|
+
self.setContextMenuFeature(new SimpleFeature(feature))
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
} catch (e) {
|
|
480
|
+
console.error(e)
|
|
481
|
+
session.notify(`${e}`)
|
|
482
|
+
}
|
|
483
|
+
},
|
|
407
484
|
}
|
|
408
485
|
},
|
|
409
486
|
|
|
@@ -191,6 +191,7 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
191
191
|
feature.get('start') - expansionBefore,
|
|
192
192
|
feature.get('end') + expansionAfter,
|
|
193
193
|
heightPx,
|
|
194
|
+
feature,
|
|
194
195
|
)
|
|
195
196
|
if (topPx === null) {
|
|
196
197
|
return null
|
|
@@ -814,7 +815,10 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
814
815
|
ctx.fillStyle = 'purple'
|
|
815
816
|
const pos = leftPx + extraHorizontallyFlippedOffset
|
|
816
817
|
const len = +mismatch.base || mismatch.length
|
|
817
|
-
const insW = Math.max(
|
|
818
|
+
const insW = Math.max(
|
|
819
|
+
minSubfeatureWidth / 2,
|
|
820
|
+
Math.min(1.2, 1 / bpPerPx),
|
|
821
|
+
)
|
|
818
822
|
if (len < 10) {
|
|
819
823
|
ctx.fillRect(pos, topPx, insW, heightPx)
|
|
820
824
|
if (1 / bpPerPx >= charWidth && heightPx >= heightLim) {
|
|
@@ -1117,7 +1121,7 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
1117
1121
|
return {
|
|
1118
1122
|
...results,
|
|
1119
1123
|
...res,
|
|
1120
|
-
features,
|
|
1124
|
+
features: new Map(),
|
|
1121
1125
|
layout,
|
|
1122
1126
|
height,
|
|
1123
1127
|
width,
|