@jbrowse/core 2.2.1 → 2.3.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.
- package/BaseFeatureWidget/SequenceFeatureDetails.js +1 -0
- package/BaseFeatureWidget/SequenceFeatureSettingsDialog.js +2 -17
- package/BaseFeatureWidget/SequenceHelpDialog.js +3 -19
- package/PluginManager.d.ts +4 -0
- package/PluginManager.js +12 -0
- package/README.md +6 -2
- package/data_adapters/BaseAdapter.d.ts +1 -1
- package/package.json +3 -3
- package/pluggableElementTypes/AdapterType.d.ts +4 -4
- package/pluggableElementTypes/AdapterType.js +0 -1
- package/pluggableElementTypes/AddTrackWorkflowType.d.ts +3 -3
- package/pluggableElementTypes/ConnectionType.d.ts +0 -1
- package/pluggableElementTypes/ConnectionType.js +0 -1
- package/pluggableElementTypes/DisplayType.d.ts +9 -0
- package/pluggableElementTypes/DisplayType.js +1 -0
- package/pluggableElementTypes/PluggableElementBase.d.ts +3 -0
- package/pluggableElementTypes/PluggableElementBase.js +4 -0
- package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -0
- package/pluggableElementTypes/TrackType.d.ts +2 -1
- package/pluggableElementTypes/ViewType.d.ts +4 -3
- package/pluggableElementTypes/WidgetType.d.ts +10 -9
- package/pluggableElementTypes/models/BaseDisplayModel.js +1 -0
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +19 -8
- package/pluggableElementTypes/models/BaseTrackModel.js +32 -26
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -3
- package/pluggableElementTypes/renderers/BoxRendererType.js +1 -14
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +9 -0
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +23 -0
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +4 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +4 -4
- package/pluggableElementTypes/renderers/FeatureRendererType.js +11 -13
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +8 -0
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +60 -0
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -2
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -6
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +5 -5
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +14 -13
- package/rpc/BaseRpcDriver.d.ts +1 -1
- package/rpc/BaseRpcDriver.js +8 -18
- package/rpc/coreRpcMethods.d.ts +11 -99
- package/rpc/coreRpcMethods.js +17 -241
- package/rpc/methods/CoreEstimateRegionStats.d.ts +18 -0
- package/rpc/methods/CoreEstimateRegionStats.js +37 -0
- package/rpc/methods/CoreFreeResources.d.ts +12 -0
- package/rpc/methods/CoreFreeResources.js +35 -0
- package/rpc/methods/CoreGetFeatureDetails.d.ts +16 -0
- package/rpc/methods/CoreGetFeatureDetails.js +44 -0
- package/rpc/methods/CoreGetFeatures.d.ts +17 -0
- package/rpc/methods/CoreGetFeatures.js +44 -0
- package/rpc/methods/CoreGetFileInfo.d.ts +10 -0
- package/rpc/methods/CoreGetFileInfo.js +24 -0
- package/rpc/methods/CoreGetMetadata.d.ts +10 -0
- package/rpc/methods/CoreGetMetadata.js +24 -0
- package/rpc/methods/CoreGetRefNames.d.ts +10 -0
- package/rpc/methods/CoreGetRefNames.js +25 -0
- package/rpc/methods/CoreRender.d.ts +14 -0
- package/rpc/methods/CoreRender.js +57 -0
- package/rpc/methods/util.d.ts +14 -0
- package/rpc/methods/util.js +21 -0
- package/rpc/remoteAbortSignals.d.ts +3 -1
- package/rpc/remoteAbortSignals.js +3 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AboutDialog.d.ts +1 -1
- package/ui/AboutDialog.js +8 -18
- package/ui/App.js +9 -77
- package/ui/AppLogo.d.ts +8 -0
- package/ui/AppLogo.js +22 -0
- package/ui/AppToolbar.d.ts +19 -0
- package/ui/AppToolbar.js +56 -0
- package/ui/AssemblySelector.d.ts +5 -3
- package/ui/AssemblySelector.js +4 -4
- package/ui/Dialog.d.ts +7 -0
- package/ui/Dialog.js +35 -0
- package/ui/FactoryResetDialog.js +8 -13
- package/ui/PrerenderedCanvas.d.ts +3 -20
- package/ui/PrerenderedCanvas.js +1 -19
- package/ui/ReturnToImportFormDialog.js +2 -17
- package/ui/Snackbar.js +7 -53
- package/ui/ViewLauncher.d.ts +18 -0
- package/ui/ViewLauncher.js +50 -0
- package/ui/index.d.ts +9 -8
- package/ui/index.js +19 -17
- package/util/Base1DUtils.js +1 -1
- package/util/analytics.js +3 -0
- package/util/dedupe.d.ts +3 -0
- package/util/dedupe.js +18 -0
- package/util/formatFastaStrings.d.ts +1 -1
- package/util/formatFastaStrings.js +1 -1
- package/util/index.d.ts +1 -0
- package/util/index.js +1 -0
- package/util/offscreenCanvasUtils.js +1 -1
- package/util/stats.d.ts +7 -3
- package/util/stats.js +33 -24
- package/util/tracks.d.ts +1 -1
- package/util/tracks.js +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const material_1 = require("@mui/material");
|
|
28
|
+
const mobx_react_1 = require("mobx-react");
|
|
29
|
+
const mui_1 = require("tss-react/mui");
|
|
30
|
+
// locals
|
|
31
|
+
const util_1 = require("../util");
|
|
32
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
33
|
+
selectPaper: {
|
|
34
|
+
padding: theme.spacing(4),
|
|
35
|
+
},
|
|
36
|
+
}));
|
|
37
|
+
const ViewLauncher = (0, mobx_react_1.observer)(({ session }) => {
|
|
38
|
+
var _a;
|
|
39
|
+
const { classes } = useStyles();
|
|
40
|
+
const { pluginManager } = (0, util_1.getEnv)(session);
|
|
41
|
+
const viewTypes = pluginManager.getElementTypeRecord('view').all();
|
|
42
|
+
const [value, setValue] = (0, react_1.useState)((_a = viewTypes[0]) === null || _a === void 0 ? void 0 : _a.name);
|
|
43
|
+
return (react_1.default.createElement(material_1.Paper, { className: classes.selectPaper },
|
|
44
|
+
react_1.default.createElement(material_1.Typography, null, "Select a view to launch"),
|
|
45
|
+
react_1.default.createElement(material_1.FormControl, { style: { margin: 2 } },
|
|
46
|
+
react_1.default.createElement(material_1.Select, { value: value, onChange: event => setValue(event.target.value) }, viewTypes.map(({ displayName, name }) => (react_1.default.createElement(material_1.MenuItem, { key: name, value: name }, displayName))))),
|
|
47
|
+
react_1.default.createElement(material_1.FormControl, { style: { margin: 2 } },
|
|
48
|
+
react_1.default.createElement(material_1.Button, { onClick: () => session.addView(value, {}), variant: "contained", color: "primary" }, "Launch view"))));
|
|
49
|
+
});
|
|
50
|
+
exports.default = ViewLauncher;
|
package/ui/index.d.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
export * from './theme';
|
|
2
2
|
export { LogoFull, Logomark } from './Logo';
|
|
3
3
|
export { default as App } from './App';
|
|
4
|
-
export { default as ReturnToImportFormDialog } from './ReturnToImportFormDialog';
|
|
5
|
-
export { default as ErrorMessage } from './ErrorMessage';
|
|
6
4
|
export { default as AssemblySelector } from './AssemblySelector';
|
|
7
|
-
export { default as
|
|
8
|
-
export { default as
|
|
9
|
-
export { default as ResizeHandle } from './ResizeHandle';
|
|
5
|
+
export { default as CascadingMenu } from './CascadingMenu';
|
|
6
|
+
export { default as Dialog } from './Dialog';
|
|
10
7
|
export { default as EditableTypography } from './EditableTypography';
|
|
8
|
+
export { default as ErrorMessage } from './ErrorMessage';
|
|
11
9
|
export { default as FactoryResetDialog } from './FactoryResetDialog';
|
|
12
|
-
export { default as Tooltip } from './Tooltip';
|
|
13
10
|
export { default as FatalErrorDialog } from './FatalErrorDialog';
|
|
11
|
+
export { default as FileSelector } from './FileSelector';
|
|
12
|
+
export { default as LoadingEllipses } from './LoadingEllipses';
|
|
14
13
|
export { default as Menu } from './Menu';
|
|
15
|
-
export { default as
|
|
14
|
+
export { default as PrerenderedCanvas } from './PrerenderedCanvas';
|
|
15
|
+
export { default as Tooltip } from './Tooltip';
|
|
16
|
+
export { default as ReturnToImportFormDialog } from './ReturnToImportFormDialog';
|
|
17
|
+
export { default as ResizeHandle } from './ResizeHandle';
|
|
16
18
|
export { default as SanitizedHTML } from './SanitizedHTML';
|
|
17
|
-
export { default as LoadingEllipses } from './LoadingEllipses';
|
|
18
19
|
export * from './Menu';
|
package/ui/index.js
CHANGED
|
@@ -17,39 +17,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
20
|
+
exports.SanitizedHTML = exports.ResizeHandle = exports.ReturnToImportFormDialog = exports.Tooltip = exports.PrerenderedCanvas = exports.Menu = exports.LoadingEllipses = exports.FileSelector = exports.FatalErrorDialog = exports.FactoryResetDialog = exports.ErrorMessage = exports.EditableTypography = exports.Dialog = exports.CascadingMenu = exports.AssemblySelector = exports.App = exports.Logomark = exports.LogoFull = void 0;
|
|
21
21
|
__exportStar(require("./theme"), exports);
|
|
22
22
|
var Logo_1 = require("./Logo");
|
|
23
23
|
Object.defineProperty(exports, "LogoFull", { enumerable: true, get: function () { return Logo_1.LogoFull; } });
|
|
24
24
|
Object.defineProperty(exports, "Logomark", { enumerable: true, get: function () { return Logo_1.Logomark; } });
|
|
25
25
|
var App_1 = require("./App");
|
|
26
26
|
Object.defineProperty(exports, "App", { enumerable: true, get: function () { return __importDefault(App_1).default; } });
|
|
27
|
-
var ReturnToImportFormDialog_1 = require("./ReturnToImportFormDialog");
|
|
28
|
-
Object.defineProperty(exports, "ReturnToImportFormDialog", { enumerable: true, get: function () { return __importDefault(ReturnToImportFormDialog_1).default; } });
|
|
29
|
-
var ErrorMessage_1 = require("./ErrorMessage");
|
|
30
|
-
Object.defineProperty(exports, "ErrorMessage", { enumerable: true, get: function () { return __importDefault(ErrorMessage_1).default; } });
|
|
31
27
|
var AssemblySelector_1 = require("./AssemblySelector");
|
|
32
28
|
Object.defineProperty(exports, "AssemblySelector", { enumerable: true, get: function () { return __importDefault(AssemblySelector_1).default; } });
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
var
|
|
36
|
-
Object.defineProperty(exports, "
|
|
37
|
-
var ResizeHandle_1 = require("./ResizeHandle");
|
|
38
|
-
Object.defineProperty(exports, "ResizeHandle", { enumerable: true, get: function () { return __importDefault(ResizeHandle_1).default; } });
|
|
29
|
+
var CascadingMenu_1 = require("./CascadingMenu");
|
|
30
|
+
Object.defineProperty(exports, "CascadingMenu", { enumerable: true, get: function () { return __importDefault(CascadingMenu_1).default; } });
|
|
31
|
+
var Dialog_1 = require("./Dialog");
|
|
32
|
+
Object.defineProperty(exports, "Dialog", { enumerable: true, get: function () { return __importDefault(Dialog_1).default; } });
|
|
39
33
|
var EditableTypography_1 = require("./EditableTypography");
|
|
40
34
|
Object.defineProperty(exports, "EditableTypography", { enumerable: true, get: function () { return __importDefault(EditableTypography_1).default; } });
|
|
35
|
+
var ErrorMessage_1 = require("./ErrorMessage");
|
|
36
|
+
Object.defineProperty(exports, "ErrorMessage", { enumerable: true, get: function () { return __importDefault(ErrorMessage_1).default; } });
|
|
41
37
|
var FactoryResetDialog_1 = require("./FactoryResetDialog");
|
|
42
38
|
Object.defineProperty(exports, "FactoryResetDialog", { enumerable: true, get: function () { return __importDefault(FactoryResetDialog_1).default; } });
|
|
43
|
-
var Tooltip_1 = require("./Tooltip");
|
|
44
|
-
Object.defineProperty(exports, "Tooltip", { enumerable: true, get: function () { return __importDefault(Tooltip_1).default; } });
|
|
45
39
|
var FatalErrorDialog_1 = require("./FatalErrorDialog");
|
|
46
40
|
Object.defineProperty(exports, "FatalErrorDialog", { enumerable: true, get: function () { return __importDefault(FatalErrorDialog_1).default; } });
|
|
41
|
+
var FileSelector_1 = require("./FileSelector");
|
|
42
|
+
Object.defineProperty(exports, "FileSelector", { enumerable: true, get: function () { return __importDefault(FileSelector_1).default; } });
|
|
43
|
+
var LoadingEllipses_1 = require("./LoadingEllipses");
|
|
44
|
+
Object.defineProperty(exports, "LoadingEllipses", { enumerable: true, get: function () { return __importDefault(LoadingEllipses_1).default; } });
|
|
47
45
|
var Menu_1 = require("./Menu");
|
|
48
46
|
Object.defineProperty(exports, "Menu", { enumerable: true, get: function () { return __importDefault(Menu_1).default; } });
|
|
49
|
-
var
|
|
50
|
-
Object.defineProperty(exports, "
|
|
47
|
+
var PrerenderedCanvas_1 = require("./PrerenderedCanvas");
|
|
48
|
+
Object.defineProperty(exports, "PrerenderedCanvas", { enumerable: true, get: function () { return __importDefault(PrerenderedCanvas_1).default; } });
|
|
49
|
+
var Tooltip_1 = require("./Tooltip");
|
|
50
|
+
Object.defineProperty(exports, "Tooltip", { enumerable: true, get: function () { return __importDefault(Tooltip_1).default; } });
|
|
51
|
+
var ReturnToImportFormDialog_1 = require("./ReturnToImportFormDialog");
|
|
52
|
+
Object.defineProperty(exports, "ReturnToImportFormDialog", { enumerable: true, get: function () { return __importDefault(ReturnToImportFormDialog_1).default; } });
|
|
53
|
+
var ResizeHandle_1 = require("./ResizeHandle");
|
|
54
|
+
Object.defineProperty(exports, "ResizeHandle", { enumerable: true, get: function () { return __importDefault(ResizeHandle_1).default; } });
|
|
51
55
|
var SanitizedHTML_1 = require("./SanitizedHTML");
|
|
52
56
|
Object.defineProperty(exports, "SanitizedHTML", { enumerable: true, get: function () { return __importDefault(SanitizedHTML_1).default; } });
|
|
53
|
-
var LoadingEllipses_1 = require("./LoadingEllipses");
|
|
54
|
-
Object.defineProperty(exports, "LoadingEllipses", { enumerable: true, get: function () { return __importDefault(LoadingEllipses_1).default; } });
|
|
55
57
|
__exportStar(require("./Menu"), exports);
|
package/util/Base1DUtils.js
CHANGED
|
@@ -109,7 +109,7 @@ function pxToBp(self, px) {
|
|
|
109
109
|
bpSoFar += len;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
if (bp >= bpSoFar) {
|
|
112
|
+
if (bp >= bpSoFar && displayedRegions.length) {
|
|
113
113
|
const region = displayedRegions[displayedRegions.length - 1];
|
|
114
114
|
const len = region.end - region.start;
|
|
115
115
|
const offset = bp - bpSoFar + len;
|
package/util/analytics.js
CHANGED
|
@@ -89,7 +89,10 @@ exports.writeGAAnalytics = writeGAAnalytics;
|
|
|
89
89
|
function doAnalytics(rootModel, initialTimestamp, initialSessionQuery) {
|
|
90
90
|
if (rootModel &&
|
|
91
91
|
!(0, configuration_1.readConfObject)(rootModel.jbrowse.configuration, 'disableAnalytics')) {
|
|
92
|
+
// ok if these are unhandled
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
92
94
|
writeAWSAnalytics(rootModel, initialTimestamp, initialSessionQuery);
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
93
96
|
writeGAAnalytics(rootModel, initialTimestamp);
|
|
94
97
|
}
|
|
95
98
|
}
|
package/util/dedupe.d.ts
ADDED
package/util/dedupe.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dedupe = void 0;
|
|
4
|
+
// from https://github.com/seriousManual/dedupe/blob/master/LICENSE
|
|
5
|
+
function dedupe(list, hasher = JSON.stringify) {
|
|
6
|
+
const clone = [];
|
|
7
|
+
const lookup = new Set();
|
|
8
|
+
for (let i = 0; i < list.length; i++) {
|
|
9
|
+
const entry = list[i];
|
|
10
|
+
const hashed = hasher(entry);
|
|
11
|
+
if (!lookup.has(hashed)) {
|
|
12
|
+
clone.push(entry);
|
|
13
|
+
lookup.add(hashed);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return clone;
|
|
17
|
+
}
|
|
18
|
+
exports.dedupe = dedupe;
|
|
@@ -7,7 +7,7 @@ export interface SeqChunk {
|
|
|
7
7
|
* ref https://stackoverflow.com/a/51506718/2129219
|
|
8
8
|
*
|
|
9
9
|
* @param seqString - string
|
|
10
|
-
* @returns
|
|
10
|
+
* @returns formatted sequence string
|
|
11
11
|
*/
|
|
12
12
|
export declare function formatFastaLines(seqString: string): string;
|
|
13
13
|
/**
|
|
@@ -6,7 +6,7 @@ exports.formatSeqFasta = exports.formatFastaLines = void 0;
|
|
|
6
6
|
* ref https://stackoverflow.com/a/51506718/2129219
|
|
7
7
|
*
|
|
8
8
|
* @param seqString - string
|
|
9
|
-
* @returns
|
|
9
|
+
* @returns formatted sequence string
|
|
10
10
|
*/
|
|
11
11
|
function formatFastaLines(seqString) {
|
|
12
12
|
return seqString.replace(/(.{1,80})/g, '$1\n').trimEnd();
|
package/util/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './types';
|
|
|
9
9
|
export * from './aborting';
|
|
10
10
|
export * from './when';
|
|
11
11
|
export * from './range';
|
|
12
|
+
export * from './dedupe';
|
|
12
13
|
export { SimpleFeature, isFeature };
|
|
13
14
|
export * from './offscreenCanvasPonyfill';
|
|
14
15
|
export * from './offscreenCanvasUtils';
|
package/util/index.js
CHANGED
|
@@ -46,6 +46,7 @@ __exportStar(require("./types"), exports);
|
|
|
46
46
|
__exportStar(require("./aborting"), exports);
|
|
47
47
|
__exportStar(require("./when"), exports);
|
|
48
48
|
__exportStar(require("./range"), exports);
|
|
49
|
+
__exportStar(require("./dedupe"), exports);
|
|
49
50
|
__exportStar(require("./offscreenCanvasPonyfill"), exports);
|
|
50
51
|
__exportStar(require("./offscreenCanvasUtils"), exports);
|
|
51
52
|
exports.inDevelopment = typeof process === 'object' &&
|
package/util/stats.d.ts
CHANGED
|
@@ -26,12 +26,15 @@ export interface FeatureStats extends UnrectifiedFeatureStats {
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function calcStdFromSums(sum: number, sumSquares: number, n: number, population?: boolean): number;
|
|
28
28
|
/**
|
|
29
|
-
* @param stats - a summary stats object with scoreSum, featureCount,
|
|
30
|
-
*
|
|
29
|
+
* @param stats - a summary stats object with scoreSum, featureCount,
|
|
30
|
+
* scoreSumSquares, and basesCovered
|
|
31
|
+
* @returns - a summary stats object with
|
|
32
|
+
* scoreMean, scoreStdDev, and featureDensity added
|
|
31
33
|
*/
|
|
32
34
|
export declare function rectifyStats(s: UnrectifiedFeatureStats): FeatureStats;
|
|
33
35
|
/**
|
|
34
36
|
* calculates per-base scores for variable width features over a region
|
|
37
|
+
*
|
|
35
38
|
* @param region - object contains start, end
|
|
36
39
|
* @param features - list of features with start, end, score
|
|
37
40
|
* @returns array of numeric scores
|
|
@@ -39,9 +42,10 @@ export declare function rectifyStats(s: UnrectifiedFeatureStats): FeatureStats;
|
|
|
39
42
|
export declare function calcPerBaseStats(region: NoAssemblyRegion, features: Feature[]): number[];
|
|
40
43
|
/**
|
|
41
44
|
* transform a list of scores to summary statistics
|
|
45
|
+
*
|
|
42
46
|
* @param region - object with start, end
|
|
43
47
|
* @param features - array of features which are possibly summary features
|
|
44
48
|
* @returns - object with scoreMax, scoreMin, scoreSum, scoreSumSquares, etc
|
|
45
49
|
*/
|
|
46
|
-
export declare function scoresToStats(region: NoAssemblyRegion,
|
|
50
|
+
export declare function scoresToStats(region: NoAssemblyRegion, feats: Observable<Feature>): Promise<FeatureStats>;
|
|
47
51
|
export declare function blankStats(): FeatureStats;
|
package/util/stats.js
CHANGED
|
@@ -31,8 +31,10 @@ function calcStdFromSums(sum, sumSquares, n, population = false) {
|
|
|
31
31
|
}
|
|
32
32
|
exports.calcStdFromSums = calcStdFromSums;
|
|
33
33
|
/**
|
|
34
|
-
* @param stats - a summary stats object with scoreSum, featureCount,
|
|
35
|
-
*
|
|
34
|
+
* @param stats - a summary stats object with scoreSum, featureCount,
|
|
35
|
+
* scoreSumSquares, and basesCovered
|
|
36
|
+
* @returns - a summary stats object with
|
|
37
|
+
* scoreMean, scoreStdDev, and featureDensity added
|
|
36
38
|
*/
|
|
37
39
|
function rectifyStats(s) {
|
|
38
40
|
return {
|
|
@@ -45,6 +47,7 @@ function rectifyStats(s) {
|
|
|
45
47
|
exports.rectifyStats = rectifyStats;
|
|
46
48
|
/**
|
|
47
49
|
* calculates per-base scores for variable width features over a region
|
|
50
|
+
*
|
|
48
51
|
* @param region - object contains start, end
|
|
49
52
|
* @param features - list of features with start, end, score
|
|
50
53
|
* @returns array of numeric scores
|
|
@@ -78,39 +81,45 @@ function calcPerBaseStats(region, features) {
|
|
|
78
81
|
exports.calcPerBaseStats = calcPerBaseStats;
|
|
79
82
|
/**
|
|
80
83
|
* transform a list of scores to summary statistics
|
|
84
|
+
*
|
|
81
85
|
* @param region - object with start, end
|
|
82
86
|
* @param features - array of features which are possibly summary features
|
|
83
87
|
* @returns - object with scoreMax, scoreMin, scoreSum, scoreSumSquares, etc
|
|
84
88
|
*/
|
|
85
|
-
async function scoresToStats(region,
|
|
89
|
+
async function scoresToStats(region, feats) {
|
|
86
90
|
const { start, end } = region;
|
|
87
|
-
const
|
|
88
|
-
.pipe((0, operators_1.reduce)((seed, f) => {
|
|
89
|
-
const s = f.get('score');
|
|
90
|
-
const summary = f.get('summary');
|
|
91
|
-
const { scoreMax, scoreMin } = seed;
|
|
92
|
-
seed.scoreMax = Math.max(scoreMax, summary ? f.get('maxScore') : s);
|
|
93
|
-
seed.scoreMin = Math.min(scoreMin, summary ? f.get('minScore') : s);
|
|
94
|
-
seed.scoreSum += s;
|
|
95
|
-
seed.scoreSumSquares += s * s;
|
|
96
|
-
seed.featureCount += 1;
|
|
97
|
-
return seed;
|
|
98
|
-
}, {
|
|
91
|
+
const seed = {
|
|
99
92
|
scoreMin: Number.MAX_VALUE,
|
|
100
93
|
scoreMax: Number.MIN_VALUE,
|
|
101
94
|
scoreSum: 0,
|
|
102
95
|
scoreSumSquares: 0,
|
|
103
96
|
featureCount: 0,
|
|
104
|
-
}
|
|
97
|
+
};
|
|
98
|
+
let found = false;
|
|
99
|
+
const { scoreMin, scoreMax, scoreSum, scoreSumSquares, featureCount } = await feats
|
|
100
|
+
.pipe((0, operators_1.reduce)((acc, f) => {
|
|
101
|
+
const s = f.get('score');
|
|
102
|
+
const summary = f.get('summary');
|
|
103
|
+
const { scoreMax, scoreMin } = acc;
|
|
104
|
+
acc.scoreMax = Math.max(scoreMax, summary ? f.get('maxScore') : s);
|
|
105
|
+
acc.scoreMin = Math.min(scoreMin, summary ? f.get('minScore') : s);
|
|
106
|
+
acc.scoreSum += s;
|
|
107
|
+
acc.scoreSumSquares += s * s;
|
|
108
|
+
acc.featureCount += 1;
|
|
109
|
+
found = true;
|
|
110
|
+
return acc;
|
|
111
|
+
}, seed))
|
|
105
112
|
.toPromise();
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
return found
|
|
114
|
+
? rectifyStats({
|
|
115
|
+
scoreMax,
|
|
116
|
+
scoreMin,
|
|
117
|
+
scoreSum,
|
|
118
|
+
scoreSumSquares,
|
|
119
|
+
featureCount,
|
|
120
|
+
basesCovered: end - start + 1,
|
|
121
|
+
})
|
|
122
|
+
: blankStats();
|
|
114
123
|
}
|
|
115
124
|
exports.scoresToStats = scoresToStats;
|
|
116
125
|
function blankStats() {
|
package/util/tracks.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare function storeBlobLocation(location: PreFileLocation): import("./
|
|
|
31
31
|
* creates a new location from the provided location including the appropriate suffix and location type
|
|
32
32
|
* @param location - the FileLocation
|
|
33
33
|
* @param suffix - the file suffix (e.g. .bam)
|
|
34
|
-
* @returns the constructed location object from the provided
|
|
34
|
+
* @returns the constructed location object from the provided parameters
|
|
35
35
|
*/
|
|
36
36
|
export declare function makeIndex(location: FileLocation, suffix: string): import("./types").BlobLocation | {
|
|
37
37
|
uri: string;
|
package/util/tracks.js
CHANGED
|
@@ -87,7 +87,7 @@ exports.storeBlobLocation = storeBlobLocation;
|
|
|
87
87
|
* creates a new location from the provided location including the appropriate suffix and location type
|
|
88
88
|
* @param location - the FileLocation
|
|
89
89
|
* @param suffix - the file suffix (e.g. .bam)
|
|
90
|
-
* @returns the constructed location object from the provided
|
|
90
|
+
* @returns the constructed location object from the provided parameters
|
|
91
91
|
*/
|
|
92
92
|
function makeIndex(location, suffix) {
|
|
93
93
|
if ('uri' in location) {
|