Mercurial > repos > fubar > jbrowse2
view x/static/js/1503.cc48d25a.chunk.js.map @ 125:49f3d3878413 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author | fubar |
---|---|
date | Sat, 05 Oct 2024 23:58:05 +0000 |
parents | |
children |
line wrap: on
line source
{"version":3,"file":"static/js/1503.cc48d25a.chunk.js","mappings":"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","sources":["../../../node_modules/gtf-nostream/src/util.ts","../../../node_modules/gtf-nostream/src/parse.ts","../../../plugins/gtf/src/util.ts","../../../plugins/gtf/src/GtfAdapter/GtfAdapter.ts","../../../node_modules/gtf-nostream/src/api.ts"],"sourcesContent":["//@ts-nocheck\n/** @module util */\n\n// Forks @gmod/gff-js and adapts it to parse and format GTF.\n\nconst fieldNames = [\n 'seq_name',\n 'source',\n 'featureType',\n 'start',\n 'end',\n 'score',\n 'strand',\n 'frame',\n 'attributes',\n]\n\n// TODO: check about enconding/escaping in gtf 9th column\n/**\n * Unescape a string/text value used in a GTF attribute.\n * Textual attributes should be surrounded by double quotes\n * source info:\n * https://mblab.wustl.edu/GTF22.html\n * https://en.wikipedia.org/wiki/Gene_transfer_format\n *\n * @param {String} s\n * @returns {String}\n */\nexport function unescape(s) {\n if (s === null) {\n return null\n }\n return String(s).replace(/%([0-9A-Fa-f]{2})/g, (_, seq) =>\n String.fromCharCode(parseInt(seq, 16)),\n )\n}\n\n/**\n * Escape a value for use in a GTF attribute value.\n *\n * @param {String} s\n * @returns {String}\n */\nfunction _escape(regex, s) {\n return String(s).replace(regex, ch => {\n let hex = ch.charCodeAt(0).toString(16).toUpperCase()\n\n // lol, apparently there's no native function for fixed-width hex output\n if (hex.length < 2) {\n hex = `0${hex}`\n }\n return `%${hex}`\n })\n}\n\nexport function escape(s) {\n // eslint-disable-next-line no-control-regex\n return _escape(/[\\n;\\r\\t=%&,\\x00-\\x1f\\x7f-\\xff]/g, s)\n}\n\n/**\n * Escape a value for use in a GTF column value.\n *\n * @param {String} s\n * @returns {String}\n */\nexport function escapeColumn(s) {\n // eslint-disable-next-line no-control-regex\n return _escape(/[\\n\\r\\t%\\x00-\\x1f\\x7f-\\xff]/g, s)\n}\n\n/**\n * Parse the 9th column (attributes) of a GTF feature line.\n *\n * @param {String} attrString\n * @returns {Object}\n */\nexport function parseAttributes(attrString) {\n if (!(attrString && attrString.length) || attrString === '.') {\n return {}\n }\n\n const attrs = {}\n\n attrString\n .replace(/\\r?\\n$/, '')\n .slice(0, -1) // need to remove the last semicolon in the attributes\n .split(';')\n .forEach(attribute => {\n if (!attribute) {\n return\n }\n const attr = attribute.trim().split(' ')\n if (!(attr[1] && attr[1].length)) {\n return\n }\n\n attr[0] = attr[0].trim()\n let arec = attrs[attr[0].trim()]\n if (!arec) {\n arec = []\n attrs[attr[0]] = arec\n }\n\n // arec.push(unescape(attr[1].trim()))\n arec.push(\n ...attr[1]\n .split(',')\n .map(s => s.trim())\n .map(unescape),\n )\n })\n return attrs\n}\n\n/**\n * Parse a GTF feature line.\n *\n * @param {String} line\n * returns the parsed line in an object\n */\nexport function parseFeature(line) {\n // assumed that there are no comments at the end of a line\n // split the line into columns and replace '.' with null in each column\n const f = line.split('\\t').map(a => (a === '.' ? null : a))\n\n // unescape only the seq_name, source, and feature columns\n f[0] = unescape(f[0])\n f[1] = unescape(f[1])\n f[2] = unescape(f[2])\n\n f[8] = parseAttributes(f[8])\n const parsed = {}\n for (let i = 0; i < fieldNames.length; i += 1) {\n parsed[fieldNames[i]] = f[i] === '.' ? null : f[i]\n }\n if (parsed.start !== null) {\n parsed.start = parseInt(parsed.start, 10)\n }\n if (parsed.end !== null) {\n parsed.end = parseInt(parsed.end, 10)\n }\n if (parsed.score !== null) {\n parsed.score = parseFloat(parsed.score, 10)\n }\n if (parsed.strand != null) {\n parsed.strand = parsed.strand\n }\n return parsed\n}\n\n/**\n * Parse a GTF directive/comment line.\n *\n * @param {String} line\n * @returns {Object} the information in the directive\n */\nexport function parseDirective(line) {\n const match = /^\\s*##\\s*(\\S+)\\s*(.*)/.exec(line)\n // const match = /^\\s*\\#\\#\\s*(\\S+)\\s*(.*)/.exec(line)\n if (!match) {\n return null\n }\n\n // let [, name, contents] = match\n const name = match[1]\n let contents = match[2]\n const parsed = { directive: name }\n if (contents.length) {\n contents = contents.replace(/\\r?\\n$/, '')\n parsed.value = contents\n }\n\n // do a little additional parsing for sequence-region and genome-build directives\n if (name === 'sequence-region') {\n const [seqId, contentStart, contentEnd] = contents.split(/\\s+/, 3)\n parsed.seq_id = seqId\n parsed.start = contentStart && contentStart.replace(/\\D/g, '')\n parsed.end = contentEnd && contentEnd.replace(/\\D/g, '')\n } else if (name === 'genome-build') {\n const [source, buildname] = contents.split(/\\s+/, 2)\n parsed.source = source\n parsed.buildname = buildname\n }\n\n return parsed\n}\n\n/**\n * Format an attributes object into a string suitable for the 9th column of GTF.\n *\n * @param {Object} attrs\n */\nexport function formatAttributes(attrs) {\n const attrOrder = []\n Object.keys(attrs).forEach(tag => {\n const val = attrs[tag]\n let valstring\n // eslint-disable-next-line no-prototype-builtins\n if (val.hasOwnProperty('toString')) {\n valstring = escape(val.toString())\n } else if (Array.isArray(val.values)) {\n valstring = val.values.map(escape).join(',')\n } else if (Array.isArray(val)) {\n valstring = val.map(escape).join(',')\n } else {\n valstring = escape(val)\n }\n attrOrder.push(`${escape(tag)} ${valstring}`)\n })\n return attrOrder.length ? attrOrder.join('; ').concat(';') : '.'\n}\n\nconst translateStrand = ['-', '.', '+']\n\nfunction _formatSingleFeature(f, seenFeature) {\n const attrString =\n f.attributes === null || f.attributes === undefined\n ? '.'\n : formatAttributes(f.attributes)\n\n const fields = []\n for (let i = 0; i < 8; i += 1) {\n const val = f[fieldNames[i]]\n // deserialize strand\n if (i === 6) {\n fields[i] =\n val === null || val === undefined\n ? '.'\n : translateStrand[val + 1] || val\n } else {\n fields[i] =\n val === null || val === undefined ? '.' : escapeColumn(String(val))\n }\n }\n fields[8] = attrString\n\n const formattedString = `${fields.join('\\t')}\\n`\n\n // if we have already output this exact feature, skip it\n if (seenFeature[formattedString]) {\n return ''\n }\n\n // eslint-disable-next-line no-param-reassign\n seenFeature[formattedString] = true\n return formattedString\n}\n\nfunction _formatFeature(feature, seenFeature) {\n if (Array.isArray(feature)) {\n return feature.map(f => _formatFeature(f, seenFeature)).join('')\n }\n\n const strings = [_formatSingleFeature(feature, seenFeature)]\n ;['child_features', 'derived_features'].forEach(multiSlot => {\n if (feature[multiSlot]) {\n strings.push(\n ...feature[multiSlot].map(f => _formatFeature(f, seenFeature)),\n )\n }\n })\n return strings.join('')\n}\n\n/**\n * Format a feature object or array of\n * feature objects into one or more lines of GTF.\n *\n * @param {Object|Array[Object]} featureOrFeatures\n */\nexport function formatFeature(featureOrFeatures) {\n const seen = {}\n return _formatFeature(featureOrFeatures, seen)\n}\n\n/**\n * Format a directive into a line of GTF.\n *\n * @param {Object} directive\n * @returns {String}\n */\nexport function formatDirective(directive) {\n let str = `##${directive.directive}`\n if (directive.value) {\n str += ` ${directive.value}`\n }\n str += '\\n'\n return str\n}\n\n/**\n * Format a comment into a GTF comment.\n * Yes I know this is just adding a # and a newline.\n *\n * @param {Object} comment\n * @returns {String}\n */\nexport function formatComment(comment) {\n return `# ${comment.comment}\\n`\n}\n\n/**\n * Format a sequence object as FASTA\n *\n * @param {Object} seq\n * @returns {String} formatted single FASTA sequence\n */\nexport function formatSequence(seq) {\n return `>${seq.id}${seq.description ? ` ${seq.description}` : ''}\\n${\n seq.sequence\n }\\n`\n}\n\n/**\n * Format a directive, comment, or feature,\n * or array of such items, into one or more lines of GTF.\n *\n * @param {Object|Array} itemOrItems\n */\nexport function formatItem(itemOrItems) {\n function formatSingleItem(item) {\n if (item[0] || item.attributes) {\n return formatFeature(item)\n }\n if (item.directive) {\n return formatDirective(item)\n }\n if (item.sequence) {\n return formatSequence(item)\n }\n if (item.comment) {\n return formatComment(item)\n }\n return '# (invalid item found during format)\\n'\n }\n\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.map(item => formatSingleItem(item))\n }\n return formatSingleItem(itemOrItems)\n}\n","//@ts-nocheck\nimport * as GTF from './util'\n\nconst containerAttributes = {\n Parent: 'child_features',\n Derives_from: 'derived_features',\n}\n\nexport default class Parser {\n constructor(args) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const nullFunc = () => {}\n\n Object.assign(this, {\n featureCallback: args.featureCallback || nullFunc,\n endCallback: args.endCallback || nullFunc,\n commentCallback: args.commentCallback || nullFunc,\n errorCallback: args.errorCallback || nullFunc,\n directiveCallback: args.directiveCallback || nullFunc,\n sequenceCallback: args.sequenceCallback || nullFunc,\n\n // number of lines to buffer\n bufferSize: args.bufferSize === undefined ? 1000 : args.bufferSize,\n\n // features that we have to keep on hand for now because they\n // might be referenced by something else\n _underConstructionTopLevel: [],\n // index of the above by ID\n _underConstructionById: {},\n\n _completedReferences: {},\n\n // features that reference something we have not seen yet\n // structured as:\n // { 'some_id' : {\n // 'Parent' : [ orphans that have a Parent attr referencing it ],\n // 'Derives_from' : [ orphans that have a Derives_from attr referencing it ],\n // }\n // }\n _underConstructionOrphans: {},\n\n // if this is true, the parser ignores the\n // rest of the lines in the file.\n eof: false,\n\n lineNumber: 0,\n })\n }\n\n addLine(line) {\n if (this.eof) {\n // otherwise, if we are done, ignore this line\n return\n }\n\n this.lineNumber += 1\n\n if (/^\\s*[^#\\s>]/.test(line)) {\n // feature line, most common case\n this._bufferLine(line)\n return\n }\n\n const match = /^\\s*(#+)(.*)/.exec(line)\n if (match) {\n // directive or comment\n // eslint-disable-next-line prefer-const\n let [, hashsigns, contents] = match\n\n if (hashsigns.length === 3) {\n // sync directive, all forward-references are resolved.\n this._emitAllUnderConstructionFeatures()\n } else if (hashsigns.length === 2) {\n const directive = GTF.parseDirective(line)\n\n this._emitItem(directive)\n } else {\n contents = contents.replace(/\\s*/, '')\n this._emitItem({ comment: contents })\n }\n } else if (/^\\s*$/.test(line)) {\n // blank line, do nothing\n } else {\n // it's a parse error\n const errLine = line.replace(/\\r?\\n?$/g, '')\n throw new Error(`GTF parse error. Cannot parse '${errLine}'.`)\n }\n }\n\n _emitItem(i) {\n if (i[0]) {\n this.featureCallback(i)\n } else if (i.directive) {\n this.directiveCallback(i)\n } else if (i.comment) {\n this.commentCallback(i)\n }\n }\n\n finish() {\n this._emitAllUnderConstructionFeatures()\n this.endCallback()\n }\n\n _enforceBufferSizeLimit(additionalItemCount = 0) {\n const _unbufferItem = item => {\n if (\n item?.[0]?.attributes?.ID?.[0]\n ) {\n const ids = item[0].attributes.ID\n ids.forEach(id => {\n delete this._underConstructionById[id]\n delete this._completedReferences[id]\n })\n item.forEach(i => {\n if (i.child_features) {\n i.child_features.forEach(c => { _unbufferItem(c) })\n }\n if (i.derived_features) {\n i.derived_features.forEach(d => { _unbufferItem(d) })\n }\n })\n }\n }\n\n while (\n this._underConstructionTopLevel.length + additionalItemCount >\n this.bufferSize\n ) {\n const item = this._underConstructionTopLevel.shift()\n this._emitItem(item)\n _unbufferItem(item)\n }\n }\n\n /**\n * return all under-construction features, called when we know\n * there will be no additional data to attach to them\n * @private\n */\n _emitAllUnderConstructionFeatures() {\n this._underConstructionTopLevel.forEach(this._emitItem.bind(this))\n\n this._underConstructionTopLevel = []\n this._underConstructionById = {}\n this._completedReferences = {}\n\n // if we have any orphans hanging around still, this is a\n // problem. die with a parse error\n if (\n Object.values(this._underConstructionOrphans).filter(\n entry => Object.keys(entry).length,\n ).length\n ) {\n throw new Error(\n `some features reference other features that do not exist in the file (or in the same '###' scope). ${JSON.stringify(\n this._underConstructionOrphans,\n )}`,\n )\n }\n }\n\n // do the right thing with a newly-parsed feature line\n _bufferLine(line) {\n const featureLine = GTF.parseFeature(line)\n featureLine.child_features = []\n featureLine.derived_features = []\n // featureLine._lineNumber = this.lineNumber //< debugging aid\n\n const featureNumber = this.lineNumber // no such thing as unique ID in GTF. make one up.\n const isTranscript = featureLine.featureType === 'transcript' // trying to support the Cufflinks convention of adding a transcript line\n // NOTE: a feature is an arrayref of one or more feature lines.\n const ids = isTranscript\n ? featureLine.attributes.transcript_id || []\n : [featureNumber]\n const parents = isTranscript\n ? []\n : featureLine.attributes.transcript_id || []\n const derives = featureLine.attributes.Derives_from || []\n\n if (!ids.length && !parents.length && !derives.length) {\n // if it has no IDs and does not refer to anything, we can just\n // output it\n this._emitItem([featureLine])\n return\n }\n\n function createTranscript(feature) {\n const result = JSON.parse(JSON.stringify(feature))\n result.featureType = 'transcript'\n return GTF.formatFeature(result)\n }\n\n parents.forEach(parent => {\n const underConst = this._underConstructionById[parent]\n if (!underConst) {\n this._bufferLine(createTranscript(featureLine))\n }\n })\n\n let feature\n ids.forEach(id => {\n const existing = this._underConstructionById[id]\n if (existing) {\n existing.push(featureLine)\n feature = existing\n } else {\n // haven't seen it yet, so buffer it so we can attach\n // child features to it\n feature = [featureLine]\n\n this._enforceBufferSizeLimit(1)\n if (!parents.length && !derives.length) {\n this._underConstructionTopLevel.push(feature)\n }\n this._underConstructionById[id] = feature\n\n // see if we have anything buffered that refers to it\n this._resolveReferencesTo(feature, id)\n }\n })\n\n // try to resolve all its references\n this._resolveReferencesFrom(\n feature || [featureLine],\n { Parent: parents, Derives_from: derives },\n ids,\n )\n }\n\n _resolveReferencesTo(feature, id) {\n const references = this._underConstructionOrphans[id]\n if (!references) {\n return\n }\n\n Object.keys(references).forEach(attrname => {\n const pname = containerAttributes[attrname] || attrname.toLowerCase()\n feature.forEach(loc => {\n loc[pname].push(...references[attrname])\n delete references[attrname]\n })\n })\n }\n\n _parseError(message) {\n this.eof = true\n this.errorCallback(`${this.lineNumber}: ${message}`)\n }\n\n _resolveReferencesFrom(feature, references, ids) {\n // this is all a bit more awkward in javascript than it was in perl\n function postSet(obj, slot1, slot2) {\n let subObj = obj[slot1]\n if (!subObj) {\n subObj = {}\n \n obj[slot1] = subObj\n }\n const returnVal = subObj[slot2] || false\n subObj[slot2] = true\n return returnVal\n }\n\n function expandFeature(parentFeature, childFeature) {\n \n parentFeature[0].start = Math.min(\n parentFeature[0].start,\n childFeature[0].start,\n )\n \n parentFeature[0].end = Math.max(parentFeature[0].end, childFeature[0].end)\n }\n\n Object.entries(references).forEach(([attrname, toIds]) => {\n let pname\n toIds.forEach(toId => {\n const otherFeature = this._underConstructionById[toId]\n if (otherFeature) {\n expandFeature(otherFeature, feature)\n if (!pname) {\n pname = containerAttributes[attrname] || attrname.toLowerCase()\n }\n\n if (\n !ids.filter(id =>\n postSet(this._completedReferences, id, `${attrname},${toId}`),\n ).length\n ) {\n otherFeature.forEach(location => {\n location[pname].push(feature)\n })\n }\n } else {\n if (!this._underConstructionOrphans[toId]) {\n this._underConstructionOrphans[toId] = {}\n }\n if (!this._underConstructionOrphans[toId][attrname]) {\n this._underConstructionOrphans[toId][attrname] = []\n }\n this._underConstructionOrphans[toId][attrname].push(feature)\n }\n })\n })\n }\n}\n","export type Strand = '+' | '-' | '.' | '?'\nexport interface FeatureLoc {\n [key: string]: unknown\n start: number\n end: number\n strand: Strand\n seq_name: string\n child_features?: FeatureLoc[][]\n data: unknown\n derived_features: unknown\n attributes: Record<string, unknown[]>\n}\n\nexport function featureData(data: FeatureLoc) {\n const f: Record<string, unknown> = { ...data }\n ;(f.start as number) -= 1 // convert to interbase\n f.strand = { '+': 1, '-': -1, '.': 0, '?': undefined }[data.strand] // convert strand\n f.phase = Number(data.frame)\n f.refName = data.seq_name\n if (data.score === null) {\n f.score = undefined\n }\n if (data.frame === null) {\n f.score = undefined\n }\n const defaultFields = new Set([\n 'start',\n 'end',\n 'seq_name',\n 'score',\n 'featureType',\n 'source',\n 'frame',\n 'strand',\n ])\n for (const a of Object.keys(data.attributes)) {\n let b = a.toLowerCase()\n if (defaultFields.has(b)) {\n // add \"suffix\" to tag name if it already exists\n // reproduces behavior of NCList\n b += '2'\n }\n if (data.attributes[a]) {\n let attr = data.attributes[a] as string[] | string\n if (Array.isArray(attr) && attr.length === 1) {\n // gtf uses double quotes for text values in the attributes column,\n // remove them\n attr = attr[0]!.replaceAll(/^\"|\"$/g, '')\n }\n f[b] = attr\n }\n }\n f.refName = f.seq_name\n f.type = f.featureType\n\n // the SimpleFeature constructor takes care of recursively inflating subfeatures\n if (data.child_features && data.child_features.length > 0) {\n f.subfeatures = data.child_features.flatMap(childLocs =>\n childLocs.map(childLoc => featureData(childLoc)),\n )\n }\n\n f.child_features = undefined\n f.data = undefined\n f.derived_features = undefined\n f._linehash = undefined\n f.attributes = undefined\n f.seq_name = undefined\n f.featureType = undefined\n f.frame = undefined\n\n if (f.transcript_id) {\n f.name = f.transcript_id\n }\n return f\n}\n","import {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { NoAssemblyRegion } from '@jbrowse/core/util/types'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport IntervalTree from '@flatten-js/interval-tree'\nimport {\n SimpleFeature,\n Feature,\n updateStatus,\n isGzip,\n} from '@jbrowse/core/util'\nimport { unzip } from '@gmod/bgzf-filehandle'\nimport { parseStringSync } from 'gtf-nostream'\nimport type { Buffer } from 'buffer'\n\n// locals\nimport { FeatureLoc, featureData } from '../util'\n\nconst decoder =\n typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined\n\ntype StatusCallback = (arg: string) => void\n\nexport default class GtfAdapter extends BaseFeatureDataAdapter {\n calculatedIntervalTreeMap: Record<string, IntervalTree> = {}\n\n gtfFeatures?: Promise<{\n header: string\n intervalTreeMap: Record<string, (sc?: StatusCallback) => IntervalTree>\n }>\n\n private async loadDataP(opts?: BaseOptions) {\n const { statusCallback = () => {} } = opts || {}\n const buf = (await openLocation(\n this.getConf('gtfLocation'),\n this.pluginManager,\n ).readFile(opts)) as Buffer\n\n const buffer = isGzip(buf)\n ? await updateStatus('Unzipping', statusCallback, () => unzip(buf))\n : buf\n const headerLines = []\n const featureMap = {} as Record<string, string>\n let blockStart = 0\n\n let i = 0\n while (blockStart < buffer.length) {\n const n = buffer.indexOf('\\n', blockStart)\n // could be a non-newline ended file, so slice to end of file if n===-1\n const b =\n n === -1 ? buffer.subarray(blockStart) : buffer.subarray(blockStart, n)\n const line = (decoder?.decode(b) || b.toString()).trim()\n if (line) {\n if (line.startsWith('#')) {\n headerLines.push(line)\n } else if (line.startsWith('>')) {\n break\n } else {\n const ret = line.indexOf('\\t')\n const refName = line.slice(0, ret)\n if (!featureMap[refName]) {\n featureMap[refName] = ''\n }\n featureMap[refName] += `${line}\\n`\n }\n }\n if (i++ % 10_000 === 0) {\n statusCallback(\n `Loading ${Math.floor(blockStart / 1_000_000).toLocaleString('en-US')}/${Math.floor(buffer.length / 1_000_000).toLocaleString('en-US')} MB`,\n )\n }\n\n blockStart = n + 1\n }\n\n const intervalTreeMap = Object.fromEntries(\n Object.entries(featureMap).map(([refName, lines]) => [\n refName,\n (sc?: (arg: string) => void) => {\n if (!this.calculatedIntervalTreeMap[refName]) {\n sc?.('Parsing GTF data')\n const intervalTree = new IntervalTree()\n ;(parseStringSync(lines) as FeatureLoc[][])\n .flat()\n .map(\n (f, i) =>\n new SimpleFeature({\n data: featureData(f),\n id: `${this.id}-${refName}-${i}`,\n }),\n )\n .forEach(obj =>\n intervalTree.insert([obj.get('start'), obj.get('end')], obj),\n )\n this.calculatedIntervalTreeMap[refName] = intervalTree\n }\n return this.calculatedIntervalTreeMap[refName]\n },\n ]),\n )\n\n return {\n header: headerLines.join('\\n'),\n intervalTreeMap,\n }\n }\n\n private async loadData(opts: BaseOptions = {}) {\n if (!this.gtfFeatures) {\n this.gtfFeatures = this.loadDataP(opts).catch((e: unknown) => {\n this.gtfFeatures = undefined\n throw e\n })\n }\n\n return this.gtfFeatures\n }\n\n public async getRefNames(opts: BaseOptions = {}) {\n const { intervalTreeMap } = await this.loadData(opts)\n return Object.keys(intervalTreeMap)\n }\n\n public async getHeader(opts: BaseOptions = {}) {\n const { header } = await this.loadData(opts)\n return header\n }\n\n public getFeatures(query: NoAssemblyRegion, opts: BaseOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n try {\n const { start, end, refName } = query\n const { intervalTreeMap } = await this.loadData(opts)\n intervalTreeMap[refName]?.(opts.statusCallback)\n .search([start, end])\n .forEach(f => {\n observer.next(f)\n })\n observer.complete()\n } catch (e) {\n observer.error(e)\n }\n }, opts.signal)\n }\n public freeResources(/* { region } */) {}\n}\n","import Parser from './parse'\n\nexport function parseStringSync(str: string): unknown[] {\n if (!str) {\n return []\n }\n\n const items: unknown[] = []\n\n const parser = new Parser({\n // @ts-expect-error\n featureCallback: item => items.push(item),\n // @ts-expect-error\n errorCallback: err => {\n throw err\n },\n })\n\n for (const line of str.split(/\\r?\\n/)) {\n parser.addLine(line)\n }\n parser.finish()\n\n return items\n}\n"],"names":["fieldNames","s","String","replace","_","seq","fromCharCode","parseInt","_escape","regex","ch","hex","charCodeAt","toString","toUpperCase","length","translateStrand","_formatSingleFeature","f","seenFeature","attrString","attributes","undefined","attrs","attrOrder","Object","keys","forEach","tag","val","valstring","hasOwnProperty","Array","isArray","values","map","join","push","concat","formatAttributes","fields","i","formattedString","_formatFeature","feature","strings","multiSlot","formatFeature","featureOrFeatures","containerAttributes","Parent","Derives_from","Parser","constructor","args","nullFunc","assign","this","featureCallback","endCallback","commentCallback","errorCallback","directiveCallback","sequenceCallback","bufferSize","_underConstructionTopLevel","_underConstructionById","_completedReferences","_underConstructionOrphans","eof","lineNumber","addLine","line","test","_bufferLine","match","exec","hashsigns","contents","_emitAllUnderConstructionFeatures","directive","name","parsed","value","seqId","contentStart","contentEnd","split","seq_id","start","end","source","buildname","_emitItem","comment","errLine","Error","finish","_enforceBufferSizeLimit","additionalItemCount","_unbufferItem","item","ID","id","child_features","c","derived_features","d","shift","bind","filter","entry","JSON","stringify","featureLine","a","slice","attribute","attr","trim","arec","parseAttributes","score","parseFloat","strand","featureNumber","isTranscript","featureType","ids","transcript_id","parents","derives","parent","result","parse","createTranscript","existing","_resolveReferencesTo","_resolveReferencesFrom","references","attrname","pname","toLowerCase","loc","_parseError","message","entries","toIds","toId","otherFeature","parentFeature","childFeature","Math","min","max","obj","slot1","slot2","subObj","returnVal","postSet","location","featureData","data","phase","Number","frame","refName","seq_name","defaultFields","Set","b","has","replaceAll","type","subfeatures","flatMap","childLocs","childLoc","_linehash","decoder","TextDecoder","GtfAdapter","BaseFeatureDataAdapter","calculatedIntervalTreeMap","loadDataP","opts","statusCallback","buf","openLocation","getConf","pluginManager","readFile","buffer","isGzip","updateStatus","unzip","headerLines","featureMap","blockStart","n","indexOf","subarray","decode","startsWith","ret","floor","toLocaleString","intervalTreeMap","fromEntries","lines","sc","intervalTree","IntervalTree","str","items","parser","err","parseStringSync","flat","SimpleFeature","insert","get","header","loadData","gtfFeatures","catch","e","getRefNames","getHeader","getFeatures","query","ObservableCreate","async","search","observer","next","complete","error","signal","freeResources"],"sourceRoot":""}