@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
49 lines (48 loc) • 3.98 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const mobx_react_1 = require("mobx-react");
const util_1 = require("../../util");
const util_2 = require("../util");
const CDNASequence_1 = __importDefault(require("./seqtypes/CDNASequence"));
const CDSSequence_1 = __importDefault(require("./seqtypes/CDSSequence"));
const GenomicSequence_1 = __importDefault(require("./seqtypes/GenomicSequence"));
const ProteinSequence_1 = __importDefault(require("./seqtypes/ProteinSequence"));
const SequenceContents = (0, mobx_react_1.observer)(function ({ mode, feature, sequence, model, }) {
var _a;
let { seq, upstream = '', downstream = '' } = sequence;
const children = ((_a = feature.subfeatures) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.start - b.start).map(sub => ({
...sub,
start: sub.start - feature.start,
end: sub.end - feature.start,
}))) || [];
let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));
let utr = (0, util_2.dedupe)(children.filter(sub => { var _a; return (_a = sub.type) === null || _a === void 0 ? void 0 : _a.match(/utr/i); }));
let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));
if (!utr.length && cds.length && exons.length) {
utr = (0, util_2.calculateUTRs)(cds, exons);
}
if (!utr.length && cds.length && !exons.length) {
utr = (0, util_2.calculateUTRs2)(cds, {
start: 0,
end: feature.end - feature.start,
type: 'gene',
});
}
if (feature.strand === -1) {
;
[seq, upstream, downstream] = [
(0, util_1.revcom)(seq),
(0, util_1.revcom)(downstream),
(0, util_1.revcom)(upstream),
];
cds = (0, util_2.revlist)(cds, seq.length);
exons = (0, util_2.revlist)(exons, seq.length);
utr = (0, util_2.revlist)(utr, seq.length);
}
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: mode === 'genomic' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { feature: feature, model: model, sequence: seq })) : mode === 'genomic_sequence_updownstream' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? ((0, jsx_runtime_1.jsx)(CDSSequence_1.default, { model: model, cds: cds, sequence: seq })) : mode === 'cdna' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq })) : mode === 'protein' ? ((0, jsx_runtime_1.jsx)(ProteinSequence_1.default, { model: model, cds: cds, codonTable: (0, util_1.generateCodonTable)(util_1.defaultCodonTable), sequence: seq })) : mode === 'gene' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true })) : mode === 'gene_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true })) : mode === 'gene_updownstream' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true })) : mode === 'gene_updownstream_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true })) : ((0, jsx_runtime_1.jsx)("div", { children: "Unknown type" })) }));
});
exports.default = SequenceContents;