@jbrowse/core 2.4.2 → 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.
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +16 -0
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +46 -0
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +15 -0
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +69 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicField.d.ts +17 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicField.js +23 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +26 -0
- package/BaseFeatureWidget/BaseFeatureDetail/DataGrid.d.ts +14 -0
- package/BaseFeatureWidget/BaseFeatureDetail/DataGrid.js +98 -0
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +16 -0
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +32 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +17 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +31 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriLink.d.ts +6 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriLink.js +13 -0
- package/BaseFeatureWidget/{BaseFeatureDetail.d.ts → BaseFeatureDetail/index.d.ts} +4 -4
- package/BaseFeatureWidget/{BaseFeatureDetail.js → BaseFeatureDetail/index.js} +12 -9
- package/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +4 -0
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +23 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.d.ts +12 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.js +25 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.d.ts +5 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.js +12 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.d.ts +5 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.js +14 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.d.ts +8 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.js +18 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +146 -0
- package/BaseFeatureWidget/{SequenceFeatureSettingsDialog.d.ts → SequenceFeatureDetails/SequenceFeatureSettingsDialog.d.ts} +0 -1
- package/BaseFeatureWidget/{SequenceFeatureSettingsDialog.js → SequenceFeatureDetails/SequenceFeatureSettingsDialog.js} +1 -1
- package/BaseFeatureWidget/{SequenceHelpDialog.d.ts → SequenceFeatureDetails/SequenceHelpDialog.d.ts} +0 -1
- package/BaseFeatureWidget/{SequenceHelpDialog.js → SequenceFeatureDetails/SequenceHelpDialog.js} +6 -9
- package/BaseFeatureWidget/{SequencePanel.d.ts → SequenceFeatureDetails/SequencePanel.d.ts} +1 -1
- package/BaseFeatureWidget/{SequencePanel.js → SequenceFeatureDetails/SequencePanel.js} +10 -8
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +10 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +73 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/index.d.ts +2 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/index.js +68 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +6 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/util.js +11 -0
- package/BaseFeatureWidget/index.d.ts +4 -1
- package/BaseFeatureWidget/index.js +29 -17
- package/BaseFeatureWidget/types.d.ts +2 -2
- package/Plugin.d.ts +1 -1
- package/PluginLoader.js +17 -0
- package/PluginManager.d.ts +5 -2
- package/PluginManager.js +3 -0
- package/ReExports/list.js +1 -0
- package/ReExports/modules.d.ts +5 -2
- package/ReExports/modules.js +7 -4
- package/TextSearch/TextSearchManager.d.ts +2 -9
- package/assemblyManager/assembly.d.ts +91 -8
- package/assemblyManager/assembly.js +92 -8
- package/assemblyManager/assemblyConfigSchema.d.ts +50 -1
- package/assemblyManager/assemblyManager.d.ts +115 -58
- package/assemblyManager/assemblyManager.js +60 -12
- package/configuration/configurationSchema.d.ts +14 -16
- package/configuration/configurationSchema.js +4 -2
- package/configuration/index.d.ts +1 -1
- package/configuration/types.d.ts +13 -0
- package/configuration/types.js +2 -0
- package/configuration/util.d.ts +5 -3
- package/configuration/util.js +18 -18
- package/data_adapters/BaseAdapter/BaseAdapter.d.ts +23 -0
- package/data_adapters/BaseAdapter/BaseAdapter.js +37 -0
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +128 -0
- package/data_adapters/{BaseAdapter.js → BaseAdapter/BaseFeatureDataAdapter.js} +58 -88
- package/data_adapters/BaseAdapter/BaseOptions.d.ts +16 -0
- package/data_adapters/BaseAdapter/BaseOptions.js +2 -0
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +9 -0
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.js +2 -0
- package/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -0
- package/data_adapters/BaseAdapter/BaseSequenceAdapter.js +10 -0
- package/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +6 -0
- package/data_adapters/BaseAdapter/BaseTextSearchAdapter.js +2 -0
- package/data_adapters/BaseAdapter/RegionsAdapter.d.ts +6 -0
- package/data_adapters/BaseAdapter/RegionsAdapter.js +2 -0
- package/data_adapters/BaseAdapter/index.d.ts +15 -0
- package/data_adapters/BaseAdapter/index.js +25 -0
- package/data_adapters/BaseAdapter/types.d.ts +21 -0
- package/data_adapters/BaseAdapter/types.js +2 -0
- package/data_adapters/BaseAdapter/util.d.ts +12 -0
- package/data_adapters/BaseAdapter/util.js +23 -0
- package/data_adapters/CytobandAdapter/configSchema.d.ts +11 -1
- package/package.json +4 -4
- package/pluggableElementTypes/AdapterType.d.ts +1 -1
- package/pluggableElementTypes/ConnectionType.d.ts +1 -1
- package/pluggableElementTypes/DisplayType.d.ts +1 -1
- package/pluggableElementTypes/InternetAccountType.d.ts +1 -1
- package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -1
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -1
- package/pluggableElementTypes/models/BaseTrackModel.js +3 -2
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +30 -0
- package/pluggableElementTypes/models/InternetAccountModel.js +6 -1
- package/pluggableElementTypes/models/baseConnectionConfig.d.ts +18 -1
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +42 -1
- package/pluggableElementTypes/models/baseTrackConfig.d.ts +118 -1
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +0 -1
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
- package/rpc/RpcManager.d.ts +8 -1
- package/rpc/RpcManager.js +1 -1
- package/rpc/baseRpcConfig.d.ts +10 -1
- package/rpc/configSchema.d.ts +14 -1
- package/rpc/coreRpcMethods.d.ts +1 -1
- package/rpc/coreRpcMethods.js +3 -3
- package/rpc/mainThreadRpcConfig.d.ts +7 -1
- package/rpc/methods/{CoreEstimateRegionStats.d.ts → CoreGetFeatureDensityStats.d.ts} +2 -2
- package/rpc/methods/{CoreEstimateRegionStats.js → CoreGetFeatureDensityStats.js} +4 -4
- package/rpc/methods/CoreGetFeatureDetails.js +5 -5
- package/rpc/webWorkerRpcConfig.d.ts +7 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AboutDialog.d.ts +0 -1
- package/ui/AppLogo.d.ts +0 -1
- package/ui/AssemblySelector.d.ts +0 -1
- package/ui/CascadingMenu.d.ts +0 -1
- package/ui/ColorPicker.d.ts +0 -1
- package/ui/Dialog.d.ts +0 -1
- package/ui/Dialog.js +14 -1
- package/ui/DrawerWidget.d.ts +1 -2
- package/ui/DrawerWidget.js +5 -3
- package/ui/DropDownMenu.d.ts +0 -1
- package/ui/ErrorMessage.d.ts +0 -1
- package/ui/FactoryResetDialog.d.ts +0 -1
- package/ui/FatalErrorDialog.d.ts +0 -1
- package/ui/FileSelector/FileSelector.d.ts +0 -1
- package/ui/FileSelector/LocalFileChooser.d.ts +0 -1
- package/ui/FileSelector/UrlChooser.d.ts +0 -1
- package/ui/Icons.d.ts +0 -1
- package/ui/LoadingEllipses.d.ts +0 -1
- package/ui/Logo.d.ts +0 -1
- package/ui/PrerenderedCanvas.d.ts +0 -1
- package/ui/ResizeBar.js +1 -1
- package/ui/ResizeHandle.d.ts +0 -1
- package/ui/ReturnToImportFormDialog.d.ts +0 -1
- package/ui/SanitizedHTML.d.ts +0 -1
- package/ui/SanitizedHTML.js +6 -0
- package/ui/Snackbar.d.ts +0 -1
- package/ui/Tooltip.d.ts +0 -1
- package/ui/ViewContainerTitle.d.ts +0 -1
- package/ui/ViewLauncher.d.ts +0 -1
- package/ui/ViewMenu.d.ts +1 -2
- package/ui/ViewPanel.d.ts +0 -1
- package/ui/react-colorful.d.ts +1 -1
- package/ui/theme.js +3 -18
- package/util/index.d.ts +4 -2
- package/util/index.js +13 -4
- package/util/layouts/PrecomputedMultiLayout.d.ts +1 -1
- package/util/stats.d.ts +5 -5
- package/util/types/index.d.ts +3 -1
- package/util/types/mst.d.ts +12 -9
- package/BaseFeatureWidget/SequenceBox.d.ts +0 -29
- package/BaseFeatureWidget/SequenceBox.js +0 -63
- package/BaseFeatureWidget/SequenceFeatureDetails.d.ts +0 -3
- package/BaseFeatureWidget/SequenceFeatureDetails.js +0 -230
- package/data_adapters/BaseAdapter.d.ts +0 -138
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/DLGAP3.d.ts +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/DLGAP3.js +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/NCDN.d.ts +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/NCDN.js +0 -0
|
@@ -1,230 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const react_1 = __importStar(require("react"));
|
|
30
|
-
const material_1 = require("@mui/material");
|
|
31
|
-
const mui_1 = require("tss-react/mui");
|
|
32
|
-
const copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard"));
|
|
33
|
-
// locals
|
|
34
|
-
const util_1 = require("../util");
|
|
35
|
-
const configuration_1 = require("../configuration");
|
|
36
|
-
const ui_1 = require("../ui");
|
|
37
|
-
// icons
|
|
38
|
-
const Settings_1 = __importDefault(require("@mui/icons-material/Settings"));
|
|
39
|
-
const Help_1 = __importDefault(require("@mui/icons-material/Help"));
|
|
40
|
-
// lazies
|
|
41
|
-
const SettingsDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureSettingsDialog'))));
|
|
42
|
-
const HelpDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceHelpDialog'))));
|
|
43
|
-
const SequencePanel = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequencePanel'))));
|
|
44
|
-
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
45
|
-
button: {
|
|
46
|
-
margin: theme.spacing(1),
|
|
47
|
-
},
|
|
48
|
-
formControl: {
|
|
49
|
-
margin: 0,
|
|
50
|
-
},
|
|
51
|
-
container2: {
|
|
52
|
-
marginTop: theme.spacing(1),
|
|
53
|
-
},
|
|
54
|
-
}));
|
|
55
|
-
const BPLIMIT = 500000;
|
|
56
|
-
// display the stitched-together sequence of a gene's CDS, cDNA, or protein
|
|
57
|
-
// sequence. this is a best effort and weird genomic phenomena could lead these
|
|
58
|
-
// to not be 100% accurate
|
|
59
|
-
function SequenceFeatureDetails({ model, feature }) {
|
|
60
|
-
const { classes } = useStyles();
|
|
61
|
-
const [shown, setShown] = (0, react_1.useState)(false);
|
|
62
|
-
const [helpShown, setHelpShown] = (0, react_1.useState)(false);
|
|
63
|
-
return !model ? null : (react_1.default.createElement("div", { className: classes.container2 },
|
|
64
|
-
react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => setShown(!shown) }, shown ? 'Hide feature sequence' : 'Show feature sequence'),
|
|
65
|
-
react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
|
|
66
|
-
react_1.default.createElement(material_1.IconButton, { onClick: () => setHelpShown(true) },
|
|
67
|
-
react_1.default.createElement(Help_1.default, null))),
|
|
68
|
-
react_1.default.createElement("br", null),
|
|
69
|
-
shown ? react_1.default.createElement(FeatureSequence, { model: model, feature: feature }) : null,
|
|
70
|
-
helpShown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null) },
|
|
71
|
-
react_1.default.createElement(HelpDlg, { handleClose: () => setHelpShown(false) }))) : null));
|
|
72
|
-
}
|
|
73
|
-
exports.default = SequenceFeatureDetails;
|
|
74
|
-
function FeatureSequence({ model, feature }) {
|
|
75
|
-
var _a, _b;
|
|
76
|
-
const { classes } = useStyles();
|
|
77
|
-
const parentFeature = feature;
|
|
78
|
-
const hasCDS = !!((_a = parentFeature.subfeatures) === null || _a === void 0 ? void 0 : _a.find(sub => sub.type === 'CDS'));
|
|
79
|
-
const seqPanelRef = (0, react_1.useRef)(null);
|
|
80
|
-
const [settingsDlgOpen, setSettingsDlgOpen] = (0, react_1.useState)(false);
|
|
81
|
-
const [intronBp, setIntronBp] = (0, util_1.useLocalStorage)('intronBp', 10);
|
|
82
|
-
const [upDownBp, setUpDownBp] = (0, util_1.useLocalStorage)('upDownBp', 500);
|
|
83
|
-
const [sequence, setSequence] = (0, react_1.useState)();
|
|
84
|
-
const [error, setError] = (0, react_1.useState)();
|
|
85
|
-
const [copied, setCopied] = (0, react_1.useState)(false);
|
|
86
|
-
const [copiedHtml, setCopiedHtml] = (0, react_1.useState)(false);
|
|
87
|
-
const [forceLoad, setForceLoad] = (0, react_1.useState)({
|
|
88
|
-
id: feature.uniqueId,
|
|
89
|
-
force: false,
|
|
90
|
-
});
|
|
91
|
-
(0, react_1.useEffect)(() => {
|
|
92
|
-
setForceLoad({
|
|
93
|
-
id: feature.uniqueId,
|
|
94
|
-
force: false,
|
|
95
|
-
});
|
|
96
|
-
}, [feature]);
|
|
97
|
-
(0, react_1.useEffect)(() => {
|
|
98
|
-
var _a;
|
|
99
|
-
let finished = false;
|
|
100
|
-
if (!model) {
|
|
101
|
-
return () => { };
|
|
102
|
-
}
|
|
103
|
-
const { assemblyManager, rpcManager } = (0, util_1.getSession)(model);
|
|
104
|
-
const [assemblyName] = ((_a = model.view) === null || _a === void 0 ? void 0 : _a.assemblyNames) || [];
|
|
105
|
-
async function fetchSeq(start, end, refName) {
|
|
106
|
-
const assembly = await assemblyManager.waitForAssembly(assemblyName);
|
|
107
|
-
if (!assembly) {
|
|
108
|
-
throw new Error('assembly not found');
|
|
109
|
-
}
|
|
110
|
-
const sessionId = 'getSequence';
|
|
111
|
-
const feats = await rpcManager.call(sessionId, 'CoreGetFeatures', {
|
|
112
|
-
adapterConfig: (0, configuration_1.getConf)(assembly, ['sequence', 'adapter']),
|
|
113
|
-
sessionId,
|
|
114
|
-
regions: [
|
|
115
|
-
{
|
|
116
|
-
start,
|
|
117
|
-
end,
|
|
118
|
-
refName: assembly.getCanonicalRefName(refName),
|
|
119
|
-
assemblyName,
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
});
|
|
123
|
-
const [feat] = feats;
|
|
124
|
-
return (feat === null || feat === void 0 ? void 0 : feat.get('seq')) || '';
|
|
125
|
-
}
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
127
|
-
;
|
|
128
|
-
(async () => {
|
|
129
|
-
try {
|
|
130
|
-
setError(undefined);
|
|
131
|
-
const { start, end, refName } = feature;
|
|
132
|
-
if (!forceLoad.force && end - start > BPLIMIT) {
|
|
133
|
-
setSequence({
|
|
134
|
-
error: `Genomic sequence larger than ${BPLIMIT}bp, use "force load" button to display`,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
const seq = await fetchSeq(start, end, refName);
|
|
139
|
-
const up = await fetchSeq(Math.max(0, start - upDownBp), start, refName);
|
|
140
|
-
const down = await fetchSeq(end, end + upDownBp, refName);
|
|
141
|
-
if (!finished) {
|
|
142
|
-
setSequence({ seq, upstream: up, downstream: down });
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
console.error(e);
|
|
148
|
-
setError(e);
|
|
149
|
-
}
|
|
150
|
-
})();
|
|
151
|
-
return () => {
|
|
152
|
-
finished = true;
|
|
153
|
-
};
|
|
154
|
-
}, [feature, model, upDownBp, forceLoad]);
|
|
155
|
-
const loading = !sequence;
|
|
156
|
-
const session = (0, util_1.getSession)(model);
|
|
157
|
-
const defaultSeqTypes = ['mRNA', 'transcript', 'gene'];
|
|
158
|
-
const sequenceTypes = (0, configuration_1.getConf)(session, ['featureDetails', 'sequenceTypes']) || defaultSeqTypes;
|
|
159
|
-
// only attempt fetching gene type sequence on a bare CDS if it has no parent
|
|
160
|
-
const attemptGeneType = feature.type === 'CDS'
|
|
161
|
-
? sequenceTypes.includes('CDS') && !feature.parentId
|
|
162
|
-
: sequenceTypes.includes(feature.type) && ((_b = feature.subfeatures) === null || _b === void 0 ? void 0 : _b.length);
|
|
163
|
-
const val = attemptGeneType ? (hasCDS ? 'cds' : 'cdna') : 'genomic';
|
|
164
|
-
// this useEffect is needed to reset the mode/setMode useState because the
|
|
165
|
-
// contents of the select box can completely change depending on whether we
|
|
166
|
-
// click on a gene feature or non-gene feature, so the current value in the
|
|
167
|
-
// select box must change accordingly
|
|
168
|
-
(0, react_1.useEffect)(() => {
|
|
169
|
-
setMode(val);
|
|
170
|
-
}, [attemptGeneType, val]);
|
|
171
|
-
const [mode, setMode] = (0, react_1.useState)(attemptGeneType ? (hasCDS ? 'cds' : 'cdna') : 'genomic');
|
|
172
|
-
const rest = {
|
|
173
|
-
gene: 'Gene w/ introns',
|
|
174
|
-
gene_collapsed_intron: `Gene w/ ${intronBp}bp of intron`,
|
|
175
|
-
gene_updownstream: `Gene w/ ${upDownBp}bp up+down stream`,
|
|
176
|
-
gene_updownstream_collapsed_intron: `Gene w/ ${upDownBp}bp up+down stream w/ ${intronBp}bp intron`,
|
|
177
|
-
cdna: 'cDNA',
|
|
178
|
-
};
|
|
179
|
-
const arg = attemptGeneType
|
|
180
|
-
? hasCDS
|
|
181
|
-
? {
|
|
182
|
-
cds: 'CDS',
|
|
183
|
-
protein: 'Protein',
|
|
184
|
-
...rest,
|
|
185
|
-
}
|
|
186
|
-
: rest
|
|
187
|
-
: {
|
|
188
|
-
genomic: 'Genomic seq',
|
|
189
|
-
genomic_sequence_updown: `Genomic seq w/ ${upDownBp}bp up+down stream`,
|
|
190
|
-
};
|
|
191
|
-
return (react_1.default.createElement("div", { className: classes.container2 },
|
|
192
|
-
react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
|
|
193
|
-
react_1.default.createElement(material_1.Select, { value: mode, onChange: event => setMode(event.target.value) }, Object.entries(arg).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key }, val))))),
|
|
194
|
-
react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
|
|
195
|
-
react_1.default.createElement(material_1.Button, { className: classes.button, variant: "contained", onClick: () => {
|
|
196
|
-
const ref = seqPanelRef.current;
|
|
197
|
-
if (ref) {
|
|
198
|
-
(0, copy_to_clipboard_1.default)(ref.textContent || '', { format: 'text/plain' });
|
|
199
|
-
setCopied(true);
|
|
200
|
-
setTimeout(() => setCopied(false), 1000);
|
|
201
|
-
}
|
|
202
|
-
} }, copied ? 'Copied to clipboard!' : 'Copy plaintext')),
|
|
203
|
-
react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
|
|
204
|
-
react_1.default.createElement(material_1.Tooltip, { title: "The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text" },
|
|
205
|
-
react_1.default.createElement(material_1.Button, { className: classes.button, variant: "contained", onClick: () => {
|
|
206
|
-
const ref = seqPanelRef.current;
|
|
207
|
-
if (ref) {
|
|
208
|
-
(0, copy_to_clipboard_1.default)(ref.innerHTML, { format: 'text/html' });
|
|
209
|
-
setCopiedHtml(true);
|
|
210
|
-
setTimeout(() => setCopiedHtml(false), 1000);
|
|
211
|
-
}
|
|
212
|
-
} }, copiedHtml ? 'Copied to clipboard!' : 'Copy HTML'))),
|
|
213
|
-
react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
|
|
214
|
-
react_1.default.createElement(material_1.IconButton, { onClick: () => setSettingsDlgOpen(true) },
|
|
215
|
-
react_1.default.createElement(Settings_1.default, null))),
|
|
216
|
-
react_1.default.createElement("br", null),
|
|
217
|
-
error ? (react_1.default.createElement(material_1.Typography, { color: "error" }, `${error}`)) : loading ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : sequence ? ('error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
218
|
-
react_1.default.createElement(material_1.Typography, { color: "error" }, sequence.error),
|
|
219
|
-
react_1.default.createElement(material_1.Button, { variant: "contained", color: "inherit", onClick: () => setForceLoad({ ...forceLoad, force: true }) }, "Force load"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null, "Loading") },
|
|
220
|
-
react_1.default.createElement(SequencePanel, { ref: seqPanelRef, feature: parentFeature, mode: mode, sequence: sequence, intronBp: intronBp })))) : (react_1.default.createElement(material_1.Typography, null, "No sequence found")),
|
|
221
|
-
settingsDlgOpen ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null) },
|
|
222
|
-
react_1.default.createElement(SettingsDlg, { handleClose: arg => {
|
|
223
|
-
if (arg) {
|
|
224
|
-
const { upDownBp, intronBp } = arg;
|
|
225
|
-
setIntronBp(intronBp);
|
|
226
|
-
setUpDownBp(upDownBp);
|
|
227
|
-
}
|
|
228
|
-
setSettingsDlgOpen(false);
|
|
229
|
-
}, upDownBp: upDownBp, intronBp: intronBp }))) : null));
|
|
230
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { Feature } from '../util/simpleFeature';
|
|
3
|
-
import { AnyConfigurationModel } from '../configuration';
|
|
4
|
-
import { getSubAdapterType } from './dataAdapterCache';
|
|
5
|
-
import { AugmentedRegion as Region, NoAssemblyRegion } from '../util/types';
|
|
6
|
-
import BaseResult from '../TextSearch/BaseResults';
|
|
7
|
-
import PluginManager from '../PluginManager';
|
|
8
|
-
export interface BaseOptions {
|
|
9
|
-
signal?: AbortSignal;
|
|
10
|
-
bpPerPx?: number;
|
|
11
|
-
sessionId?: string;
|
|
12
|
-
statusCallback?: (message: string) => void;
|
|
13
|
-
headers?: Record<string, string>;
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}
|
|
16
|
-
export type SearchType = 'full' | 'prefix' | 'exact';
|
|
17
|
-
export interface BaseArgs {
|
|
18
|
-
searchType?: SearchType;
|
|
19
|
-
queryString: string;
|
|
20
|
-
signal?: AbortSignal;
|
|
21
|
-
limit?: number;
|
|
22
|
-
pageNumber?: number;
|
|
23
|
-
}
|
|
24
|
-
export interface AnyAdapter {
|
|
25
|
-
new (config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager | undefined): AnyDataAdapter;
|
|
26
|
-
}
|
|
27
|
-
export type AnyDataAdapter = BaseAdapter | BaseFeatureDataAdapter | BaseRefNameAliasAdapter | BaseTextSearchAdapter | RegionsAdapter | BaseSequenceAdapter;
|
|
28
|
-
export interface SequenceAdapter extends BaseFeatureDataAdapter, RegionsAdapter {
|
|
29
|
-
}
|
|
30
|
-
export declare abstract class BaseAdapter {
|
|
31
|
-
config: AnyConfigurationModel;
|
|
32
|
-
getSubAdapter?: getSubAdapterType | undefined;
|
|
33
|
-
pluginManager?: PluginManager | undefined;
|
|
34
|
-
id: string;
|
|
35
|
-
static capabilities: string[];
|
|
36
|
-
constructor(config?: AnyConfigurationModel, getSubAdapter?: getSubAdapterType | undefined, pluginManager?: PluginManager | undefined);
|
|
37
|
-
getConf(arg: string | string[]): any;
|
|
38
|
-
/**
|
|
39
|
-
* Called to provide a hint that data tied to a certain region will not be
|
|
40
|
-
* needed for the foreseeable future and can be purged from caches, etc
|
|
41
|
-
* @param region - Region
|
|
42
|
-
*/
|
|
43
|
-
abstract freeResources(region: Region): void;
|
|
44
|
-
}
|
|
45
|
-
export interface Stats {
|
|
46
|
-
featureDensity?: number;
|
|
47
|
-
fetchSizeLimit?: number;
|
|
48
|
-
bytes?: number;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Base class for feature adapters to extend. Defines some methods that
|
|
52
|
-
* subclasses must implement.
|
|
53
|
-
*/
|
|
54
|
-
export declare abstract class BaseFeatureDataAdapter extends BaseAdapter {
|
|
55
|
-
/**
|
|
56
|
-
* Get all reference sequence names used in the data source
|
|
57
|
-
*
|
|
58
|
-
* NOTE: If an adapter is unable to determine the reference sequence names,
|
|
59
|
-
* the array will be empty
|
|
60
|
-
* @param opts - Feature adapter options
|
|
61
|
-
*/
|
|
62
|
-
abstract getRefNames(opts?: BaseOptions): Promise<string[]>;
|
|
63
|
-
/**
|
|
64
|
-
* Get features from the data source that overlap a region
|
|
65
|
-
* @param region - Region
|
|
66
|
-
* @param opts - Feature adapter options
|
|
67
|
-
* @returns Observable of Feature objects in the region
|
|
68
|
-
*/
|
|
69
|
-
abstract getFeatures(region: Region, opts?: BaseOptions): Observable<Feature>;
|
|
70
|
-
/**
|
|
71
|
-
* Return "header info" that is fetched from the data file, or other info
|
|
72
|
-
* that would not simply be in the config of the file. The return value can
|
|
73
|
-
* be `{tag:string, data: any}[]` e.g. list of tags with their values which
|
|
74
|
-
* is how VCF,BAM,CRAM return values for getInfo or it can be a nested JSON
|
|
75
|
-
* object
|
|
76
|
-
*/
|
|
77
|
-
getHeader(_opts?: BaseOptions): Promise<unknown>;
|
|
78
|
-
/**
|
|
79
|
-
* Return info that is primarily used for interpreting the data that is there,
|
|
80
|
-
* primarily in reference to being used for augmenting feature details panels
|
|
81
|
-
*/
|
|
82
|
-
getMetadata(_opts?: BaseOptions): Promise<unknown>;
|
|
83
|
-
/**
|
|
84
|
-
* Checks if the store has data for the given assembly and reference
|
|
85
|
-
* sequence, and then gets the features in the region if it does.
|
|
86
|
-
*/
|
|
87
|
-
getFeaturesInRegion(region: Region, opts?: BaseOptions): Observable<Feature>;
|
|
88
|
-
/**
|
|
89
|
-
* Checks if the store has data for the given assembly and reference
|
|
90
|
-
* sequence, and then gets the features in the region if it does.
|
|
91
|
-
*
|
|
92
|
-
* Currently this just calls getFeatureInRegion for each region. Adapters
|
|
93
|
-
* that are frequently called on multiple regions simultaneously may
|
|
94
|
-
* want to implement a more efficient custom version of this method.
|
|
95
|
-
*
|
|
96
|
-
* Currently this just calls getFeatureInRegion for each region. Adapters that
|
|
97
|
-
* are frequently called on multiple regions simultaneously may want to
|
|
98
|
-
* implement a more efficient custom version of this method.
|
|
99
|
-
*
|
|
100
|
-
* @param regions - Regions
|
|
101
|
-
* @param opts - Feature adapter options
|
|
102
|
-
* @returns Observable of Feature objects in the regions
|
|
103
|
-
*/
|
|
104
|
-
getFeaturesInMultipleRegions(regions: Region[], opts?: BaseOptions): Observable<Feature>;
|
|
105
|
-
/**
|
|
106
|
-
* Check if the store has data for the given reference name.
|
|
107
|
-
* @param refName - Name of the reference sequence
|
|
108
|
-
* @returns Whether data source has data for the given reference name
|
|
109
|
-
*/
|
|
110
|
-
hasDataForRefName(refName: string, opts?: BaseOptions): Promise<boolean>;
|
|
111
|
-
getRegionStats(region: Region, opts?: BaseOptions): Promise<import("../util/stats").FeatureStats>;
|
|
112
|
-
getMultiRegionStats(regions?: Region[], opts?: BaseOptions): Promise<import("../util/stats").FeatureStats>;
|
|
113
|
-
estimateRegionsStats(regions: Region[], opts?: BaseOptions): Promise<Stats>;
|
|
114
|
-
}
|
|
115
|
-
export interface RegionsAdapter extends BaseAdapter {
|
|
116
|
-
getRegions(opts: BaseOptions): Promise<NoAssemblyRegion[]>;
|
|
117
|
-
}
|
|
118
|
-
export declare abstract class BaseSequenceAdapter extends BaseFeatureDataAdapter implements RegionsAdapter {
|
|
119
|
-
estimateRegionsStats(): Promise<{
|
|
120
|
-
featureDensity: number;
|
|
121
|
-
}>;
|
|
122
|
-
abstract getRegions(opts: BaseOptions): Promise<NoAssemblyRegion[]>;
|
|
123
|
-
}
|
|
124
|
-
export declare function isSequenceAdapter(thing: AnyDataAdapter): thing is BaseSequenceAdapter;
|
|
125
|
-
export declare function isRegionsAdapter(thing: AnyDataAdapter): thing is RegionsAdapter;
|
|
126
|
-
export declare function isFeatureAdapter(thing: AnyDataAdapter): thing is BaseFeatureDataAdapter;
|
|
127
|
-
export interface Alias {
|
|
128
|
-
refName: string;
|
|
129
|
-
aliases: string[];
|
|
130
|
-
}
|
|
131
|
-
export interface BaseRefNameAliasAdapter extends BaseAdapter {
|
|
132
|
-
getRefNameAliases(opts: BaseOptions): Promise<Alias[]>;
|
|
133
|
-
}
|
|
134
|
-
export declare function isRefNameAliasAdapter(thing: object): thing is BaseRefNameAliasAdapter;
|
|
135
|
-
export interface BaseTextSearchAdapter extends BaseAdapter {
|
|
136
|
-
searchIndex(args: BaseArgs): Promise<BaseResult[]>;
|
|
137
|
-
}
|
|
138
|
-
export declare function isTextSearchAdapter(thing: AnyDataAdapter): thing is BaseTextSearchAdapter;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|