@jbrowse/plugin-alignments 1.6.6 → 1.6.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-alignments.cjs.development.js","sources":["../../../node_modules/regenerator-runtime/runtime.js","../src/BamAdapter/MismatchParser.ts","../src/CramAdapter/configSchema.ts","../src/CramAdapter/index.ts","../src/BamAdapter/configSchema.ts","../src/BamAdapter/index.ts","../src/HtsgetBamAdapter/configSchema.ts","../src/HtsgetBamAdapter/index.ts","../src/SNPCoverageAdapter/configSchema.ts","../src/util.ts","../src/SNPCoverageAdapter/SNPCoverageAdapter.ts","../src/SNPCoverageAdapter/index.ts","../src/SNPCoverageRenderer/configSchema.js","../src/SNPCoverageRenderer/SNPCoverageRenderer.ts","../src/SNPCoverageRenderer/index.ts","../src/PileupRenderer/sortUtil.ts","../src/PileupRenderer/PileupLayoutSession.ts","../src/PileupRenderer/PileupRenderer.tsx","../src/PileupRenderer/components/PileupRendering.tsx","../src/PileupRenderer/configSchema.ts","../src/PileupRenderer/index.ts","../src/LinearAlignmentsDisplay/models/configSchema.ts","../src/LinearAlignmentsDisplay/models/model.tsx","../src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx","../src/LinearAlignmentsDisplay/index.ts","../src/LinearSNPCoverageDisplay/models/configSchema.ts","../src/LinearSNPCoverageDisplay/components/Tooltip.tsx","../src/shared.ts","../src/LinearSNPCoverageDisplay/models/model.ts","../src/LinearSNPCoverageDisplay/index.ts","../src/LinearPileupDisplay/configSchema.ts","../src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx","../src/LinearPileupDisplay/model.ts","../src/LinearPileupDisplay/index.ts","../src/AlignmentsTrack/index.ts","../src/AlignmentsFeatureDetail/index.ts","../src/PileupRPC/rpcMethods.ts","../src/index.ts","../src/CramAdapter/CramSlightlyLazyFeature.ts","../src/CramAdapter/CramAdapter.ts","../src/BamAdapter/BamSlightlyLazyFeature.ts","../src/BamAdapter/BamAdapter.ts","../src/HtsgetBamAdapter/HtsgetBamAdapter.ts","../src/LinearPileupDisplay/components/ColorByTag.tsx","../src/LinearPileupDisplay/components/FilterByTag.tsx","../src/LinearPileupDisplay/components/SortByTag.tsx","../src/LinearPileupDisplay/components/SetFeatureHeight.tsx","../src/LinearPileupDisplay/components/SetMaxHeight.tsx","../src/LinearPileupDisplay/components/ColorByModifications.tsx","../src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { revcom } from '@jbrowse/core/util'\nexport interface Mismatch {\n qual?: number\n start: number\n length: number\n type: string\n base: string\n altbase?: string\n seq?: string\n cliplen?: number\n}\n\nexport function parseCigar(cigar: string) {\n return (cigar || '').split(/([MIDNSHPX=])/)\n}\nexport function cigarToMismatches(\n ops: string[],\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n let currOffset = 0\n let seqOffset = 0\n const mismatches: Mismatch[] = []\n for (let i = 0; i < ops.length - 1; i += 2) {\n const len = +ops[i]\n const op = ops[i + 1]\n if (op === 'M' || op === '=' || op === 'E') {\n seqOffset += len\n }\n if (op === 'I') {\n mismatches.push({\n start: currOffset,\n type: 'insertion',\n base: `${len}`,\n length: 0,\n })\n seqOffset += len\n } else if (op === 'D') {\n mismatches.push({\n start: currOffset,\n type: 'deletion',\n base: '*',\n length: len,\n })\n } else if (op === 'N') {\n mismatches.push({\n start: currOffset,\n type: 'skip',\n base: 'N',\n length: len,\n })\n } else if (op === 'X') {\n const r = seq.slice(seqOffset, seqOffset + len)\n const q = qual?.slice(seqOffset, seqOffset + len) || []\n\n for (let j = 0; j < len; j++) {\n mismatches.push({\n start: currOffset + j,\n type: 'mismatch',\n base: r[j],\n qual: q[j],\n length: 1,\n })\n }\n seqOffset += len\n } else if (op === 'H') {\n mismatches.push({\n start: currOffset,\n type: 'hardclip',\n base: `H${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (op === 'S') {\n mismatches.push({\n start: currOffset,\n type: 'softclip',\n base: `S${len}`,\n cliplen: len,\n length: 1,\n })\n seqOffset += len\n }\n\n if (op !== 'I' && op !== 'S' && op !== 'H') {\n currOffset += len\n }\n }\n return mismatches\n}\n\n/**\n * parse a SAM MD tag to find mismatching bases of the template versus the reference\n * @returns array of mismatches and their positions\n */\nexport function mdToMismatches(\n mdstring: string,\n cigarOps: string[],\n cigarMismatches: Mismatch[],\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n const mismatchRecords: Mismatch[] = []\n let curr: Mismatch = { start: 0, base: '', length: 0, type: 'mismatch' }\n const skips = cigarMismatches.filter(cigar => cigar.type === 'skip')\n let lastCigar = 0\n let lastTemplateOffset = 0\n let lastRefOffset = 0\n let lastSkipPos = 0\n\n // convert a position on the reference sequence to a position\n // on the template sequence, taking into account hard and soft\n // clipping of reads\n\n function nextRecord(): void {\n mismatchRecords.push(curr)\n\n // get a new mismatch record ready\n curr = {\n start: curr.start + curr.length,\n length: 0,\n base: '',\n type: 'mismatch',\n }\n }\n\n function getTemplateCoordLocal(refCoord: number): number {\n let templateOffset = lastTemplateOffset\n let refOffset = lastRefOffset\n for (\n let i = lastCigar;\n i < cigarOps.length && refOffset <= refCoord;\n i += 2, lastCigar = i\n ) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n templateOffset += len\n } else if (op === 'D' || op === 'P' || op === 'N') {\n refOffset += len\n } else if (op !== 'H') {\n templateOffset += len\n refOffset += len\n }\n }\n lastTemplateOffset = templateOffset\n lastRefOffset = refOffset\n\n return templateOffset - (refOffset - refCoord)\n }\n\n // now actually parse the MD string\n const md = mdstring.match(/(\\d+|\\^[a-z]+|[a-z])/gi) || []\n for (let i = 0; i < md.length; i++) {\n const token = md[i]\n const num = +token\n if (!Number.isNaN(num)) {\n curr.start += num\n } else if (token.startsWith('^')) {\n curr.length = token.length - 1\n curr.base = '*'\n curr.type = 'deletion'\n curr.seq = token.substring(1)\n nextRecord()\n } else {\n // mismatch\n for (let j = 0; j < token.length; j += 1) {\n curr.length = 1\n\n while (lastSkipPos < skips.length) {\n const mismatch = skips[lastSkipPos]\n if (curr.start >= mismatch.start) {\n curr.start += mismatch.length\n lastSkipPos++\n } else {\n break\n }\n }\n const s = cigarOps ? getTemplateCoordLocal(curr.start) : curr.start\n curr.base = seq ? seq.substr(s, 1) : 'X'\n const qualScore = qual?.slice(s, s + 1)[0]\n if (qualScore) {\n curr.qual = qualScore\n }\n curr.altbase = token\n nextRecord()\n }\n }\n }\n return mismatchRecords\n}\n\nexport function getTemplateCoord(refCoord: number, cigarOps: string[]): number {\n let templateOffset = 0\n let refOffset = 0\n for (let i = 0; i < cigarOps.length && refOffset <= refCoord; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n templateOffset += len\n } else if (op === 'D' || op === 'P') {\n refOffset += len\n } else if (op !== 'H') {\n templateOffset += len\n refOffset += len\n }\n }\n return templateOffset - (refOffset - refCoord)\n}\n\nexport function getMismatches(\n cigarString: string,\n mdString: string,\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(cigarToMismatches(cigarOps, seq, qual))\n }\n\n // now let's look for CRAM or MD mismatches\n if (mdString) {\n mismatches = mismatches.concat(\n mdToMismatches(mdString, cigarOps, mismatches, seq, qual),\n )\n }\n\n // uniqify the mismatches\n const seen: { [index: string]: boolean } = {}\n return mismatches.filter(m => {\n const key = `${m.type},${m.start},${m.length}`\n const s = seen[key]\n seen[key] = true\n return !s\n })\n}\n\n// adapted from minimap2 code static void write_MD_core function\nexport function generateMD(target: string, query: string, cigar: string) {\n let queryOffset = 0\n let targetOffset = 0\n let lengthMD = 0\n if (!target) {\n console.warn('no ref supplied to generateMD')\n return ''\n }\n const cigarOps = parseCigar(cigar)\n let str = ''\n for (let i = 0; i < cigarOps.length; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'M' || op === 'X' || op === '=') {\n for (let j = 0; j < len; j++) {\n if (\n query[queryOffset + j].toLowerCase() !==\n target[targetOffset + j].toLowerCase()\n ) {\n str += `${lengthMD}${target[targetOffset + j].toUpperCase()}`\n lengthMD = 0\n } else {\n lengthMD++\n }\n }\n queryOffset += len\n targetOffset += len\n } else if (op === 'I') {\n queryOffset += len\n } else if (op === 'D') {\n let tmp = ''\n for (let j = 0; j < len; j++) {\n tmp += target[targetOffset + j].toUpperCase()\n }\n str += `${lengthMD}^${tmp}`\n lengthMD = 0\n targetOffset += len\n } else if (op === 'N') {\n targetOffset += len\n } else if (op === 'S') {\n queryOffset += len\n }\n }\n if (lengthMD > 0) {\n str += lengthMD\n }\n return str\n}\n\n// get relative reference sequence positions for positions given relative to\n// the read sequence\nexport function* getNextRefPos(cigarOps: string[], positions: number[]) {\n let cigarIdx = 0\n let readPos = 0\n let refPos = 0\n\n for (let i = 0; i < positions.length; i++) {\n const pos = positions[i]\n for (; cigarIdx < cigarOps.length && readPos < pos; cigarIdx += 2) {\n const len = +cigarOps[cigarIdx]\n const op = cigarOps[cigarIdx + 1]\n if (op === 'S' || op === 'I') {\n readPos += len\n } else if (op === 'D' || op === 'N') {\n refPos += len\n } else if (op === 'M' || op === 'X' || op === '=') {\n readPos += len\n refPos += len\n }\n }\n\n yield positions[i] - readPos + refPos\n }\n}\n\nexport function getModificationPositions(\n mm: string,\n fseq: string,\n fstrand: number,\n) {\n const seq = fstrand === -1 ? revcom(fseq) : fseq\n return mm\n .split(';')\n .filter(mod => !!mod)\n .map(mod => {\n const [basemod, ...skips] = mod.split(',')\n\n // regexes based on parse_mm.pl from hts-specs\n const matches = basemod.match(/([A-Z])([-+])([^,.?]+)([.?])?/)\n if (!matches) {\n throw new Error('bad format for MM tag')\n }\n const [, base, strand, typestr] = matches\n\n // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n const types = typestr.split(/(\\d+|.)/).filter(f => !!f)\n\n if (strand === '-') {\n console.warn('unsupported negative strand modifications')\n // make sure to return a somewhat matching type even in this case\n return { type: 'unsupported', positions: [] }\n }\n\n // this logic also based on parse_mm.pl from hts-specs is that in the\n // sequence of the read, if we have a modification type e.g. C+m;2 and a\n // sequence ACGTACGTAC we skip the two instances of C and go to the last\n // C\n return types.map(type => {\n let i = 0\n return {\n type,\n positions: skips\n .map(score => +score)\n .map(delta => {\n do {\n if (base === 'N' || base === seq[i]) {\n delta--\n }\n i++\n } while (delta >= 0 && i < seq.length)\n const temp = i - 1\n return fstrand === -1 ? seq.length - 1 - temp : temp\n })\n .sort((a, b) => a - b),\n }\n })\n })\n .flat()\n}\n\nexport function getModificationTypes(mm: string) {\n const mods = mm.split(';')\n return mods\n .filter(mod => !!mod)\n .map(mod => {\n const [basemod] = mod.split(',')\n\n const matches = basemod.match(/([A-Z])([-+])([^,]+)/)\n if (!matches) {\n throw new Error('bad format for MM tag')\n }\n const [, , , typestr] = matches\n\n // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n return typestr.split(/(\\d+|.)/).filter(f => !!f)\n })\n .flat()\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default (pluginManager: PluginManager) => {\n return types.late(() =>\n ConfigurationSchema(\n 'CramAdapter',\n {\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 3_000_000,\n },\n cramLocation: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.cram',\n locationType: 'UriLocation',\n },\n },\n craiLocation: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.cram.crai',\n locationType: 'UriLocation',\n },\n },\n sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter'),\n },\n { explicitlyTyped: true },\n ),\n )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\n// locals\nimport configSchemaF from './configSchema'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'CramAdapter',\n configSchema: pluginManager.load(configSchemaF),\n getAdapterClass: () => import('./CramAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default types.late(() =>\n ConfigurationSchema(\n 'BamAdapter',\n {\n bamLocation: {\n type: 'fileLocation',\n defaultValue: { uri: '/path/to/my.bam', locationType: 'UriLocation' },\n },\n index: ConfigurationSchema('BamIndex', {\n indexType: {\n model: types.enumeration('IndexType', ['BAI', 'CSI']),\n type: 'stringEnum',\n defaultValue: 'BAI',\n },\n location: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.bam.bai',\n locationType: 'UriLocation',\n },\n },\n }),\n chunkSizeLimit: {\n type: 'number',\n defaultValue: 100_000_000,\n },\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 5_000_000,\n },\n sequenceAdapter: {\n type: 'frozen',\n defaultValue: null,\n },\n },\n { explicitlyTyped: true },\n ),\n)\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'BamAdapter',\n configSchema,\n getAdapterClass: () => import('./BamAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default types.late(() =>\n ConfigurationSchema(\n 'HtsgetBamAdapter',\n {\n htsgetBase: {\n type: 'string',\n defaultValue: '',\n },\n htsgetTrackId: {\n type: 'string',\n defaultValue: '',\n },\n sequenceAdapter: {\n type: 'frozen',\n defaultValue: null,\n },\n },\n { explicitlyTyped: true },\n ),\n)\n","import configSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'HtsgetBamAdapter',\n adapterMetadata: {\n category: null,\n hiddenFromGUI: true,\n displayName: null,\n description: null,\n },\n configSchema,\n getAdapterClass: () =>\n import('./HtsgetBamAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { types } from 'mobx-state-tree'\n\nexport default (pluginManager: PluginManager) =>\n types.late(() =>\n ConfigurationSchema(\n 'SNPCoverageAdapter',\n {\n subadapter: pluginManager.pluggableConfigSchemaType('adapter'),\n },\n { explicitlyTyped: true },\n ),\n )\n","import { Feature } from '@jbrowse/core/util/simpleFeature'\n// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and\n// BAM does not\nexport function getTag(feature: Feature, tag: string) {\n const tags = feature.get('tags')\n return tags ? tags[tag] : feature.get(tag)\n}\n\n// use fallback alt tag, used in situations where upper case/lower case tags\n// exist e.g. Mm/MM for base modifications\nexport function getTagAlt(feature: Feature, tag: string, alt: string) {\n return getTag(feature, tag) || getTag(feature, alt)\n}\n\n// orientation definitions from igv.js, see also\n// https://software.broadinstitute.org/software/igv/interpreting_pair_orientations\nexport const orientationTypes = {\n fr: {\n F1R2: 'LR',\n F2R1: 'LR',\n\n F1F2: 'LL',\n F2F1: 'LL',\n\n R1R2: 'RR',\n R2R1: 'RR',\n\n R1F2: 'RL',\n R2F1: 'RL',\n } as { [key: string]: string },\n\n rf: {\n R1F2: 'LR',\n R2F1: 'LR',\n\n R1R2: 'LL',\n R2R1: 'LL',\n\n F1F2: 'RR',\n F2F1: 'RR',\n\n F1R2: 'RL',\n F2R1: 'RL',\n } as { [key: string]: string },\n\n ff: {\n F2F1: 'LR',\n R1R2: 'LR',\n\n F2R1: 'LL',\n R1F2: 'LL',\n\n R2F1: 'RR',\n F1R2: 'RR',\n\n R2R1: 'RL',\n F1F2: 'RL',\n } as { [key: string]: string },\n}\n\nexport function getColorWGBS(strand: number, base: string) {\n if (strand === 1) {\n if (base === 'C') {\n return '#f00'\n }\n if (base === 'T') {\n return '#00f'\n }\n } else if (strand === -1) {\n if (base === 'G') {\n return '#f00'\n }\n if (base === 'A') {\n return '#00f'\n }\n }\n return '#888'\n}\n","import {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { reduce, filter, toArray } from 'rxjs/operators'\nimport { Observable } from 'rxjs'\nimport { getTag, getTagAlt } from '../util'\nimport {\n parseCigar,\n getNextRefPos,\n getModificationPositions,\n Mismatch,\n} from '../BamAdapter/MismatchParser'\n\ninterface SNPCoverageOptions extends BaseOptions {\n filters?: SerializableFilterChain\n}\n\nfunction mismatchLen(mismatch: Mismatch) {\n return !isInterbase(mismatch.type) ? mismatch.length : 1\n}\n\nfunction isInterbase(type: string) {\n return type === 'softclip' || type === 'hardclip' || type === 'insertion'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction inc(bin: any, strand: number, type: string, field: string) {\n if (!bin[type][field]) {\n bin[type][field] = { total: 0, strands: { '-1': 0, '0': 0, '1': 0 } }\n }\n bin[type][field].total++\n bin[type][field].strands[strand]++\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dec(bin: any, strand: number, type: string, field: string) {\n if (!bin[type][field]) {\n bin[type][field] = { total: 0, strands: { '-1': 0, '0': 0, '1': 0 } }\n }\n bin[type][field].total--\n bin[type][field].strands[strand]--\n}\n\nexport default class SNPCoverageAdapter extends BaseFeatureDataAdapter {\n protected async configure() {\n const subadapterConfig = readConfObject(this.config, 'subadapter')\n const sequenceConf = readConfObject(this.config, [\n 'subadapter',\n 'sequenceAdapter',\n ])\n const dataAdapter = await this.getSubAdapter?.(subadapterConfig)\n\n const sequenceAdapter = sequenceConf\n ? await this.getSubAdapter?.(sequenceConf)\n : undefined\n\n if (!dataAdapter) {\n throw new Error('Failed to get subadapter')\n }\n\n return {\n subadapter: dataAdapter.dataAdapter as BaseFeatureDataAdapter,\n sequenceAdapter: sequenceAdapter?.dataAdapter as\n | BaseFeatureDataAdapter\n | undefined,\n }\n }\n\n getFeatures(region: Region, opts: SNPCoverageOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n const { subadapter } = await this.configure()\n let stream = subadapter.getFeatures(region, opts)\n\n if (opts.filters) {\n const { filters } = opts\n stream = stream.pipe(filter(f => filters.passes(f, opts)))\n }\n\n const { bins, skipmap } = await this.generateCoverageBins(\n stream,\n region,\n opts,\n )\n\n bins.forEach((bin, index) => {\n observer.next(\n new SimpleFeature({\n id: `${this.id}-${region.start}-${index}`,\n data: {\n score: bin.total,\n snpinfo: bin,\n start: region.start + index,\n end: region.start + index + 1,\n refName: region.refName,\n },\n }),\n )\n })\n\n // make fake features from the coverage\n Object.entries(skipmap).forEach(([key, skip]) => {\n observer.next(\n new SimpleFeature({\n id: key,\n data: {\n type: 'skip',\n start: skip.start,\n end: skip.end,\n strand: skip.strand,\n score: skip.score,\n xs: skip.xs,\n },\n }),\n )\n })\n\n observer.complete()\n }, opts.signal)\n }\n\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const { subadapter } = await this.configure()\n return subadapter.estimateRegionsStats(regions, opts)\n }\n\n async getRefNames(opts: BaseOptions = {}) {\n const { subadapter } = await this.configure()\n return subadapter.getRefNames(opts)\n }\n\n freeResources(/* { region } */): void {}\n\n /**\n * Generates coverage bins from features which details\n * the reference, mismatches, strands, and coverage info\n * @param features - Features of region to be passed in\n * @param region - Region\n * @param bpPerPx - base pairs per pixel\n * @returns Array of nested frequency tables\n */\n async generateCoverageBins(\n features: Observable<Feature>,\n region: Region,\n opts: { bpPerPx?: number; colorBy?: { type: string; tag?: string } },\n ) {\n const { colorBy } = opts\n const { sequenceAdapter } = await this.configure()\n const { originalRefName, refName, start, end } = region\n const binMax = Math.ceil(region.end - region.start)\n\n const skipmap = {} as {\n [key: string]: {\n score: number\n feature: unknown\n start: number\n end: number\n strand: number\n xs: string\n }\n }\n\n // bins contain cov feature if they contribute to coverage, or noncov which\n // are interbase or other features that don't contribute to coverage.\n // delskips are elements that don't contribute to coverage, but should be\n // reported also (and are not interbase)\n type BinType = { total: number; strands: { [key: string]: number } }\n\n // request an extra +1 on the end to get CpG crossing region boundary\n let regionSeq: string | undefined\n\n if (sequenceAdapter) {\n const [feat] = await sequenceAdapter\n .getFeatures({\n refName: originalRefName || refName,\n start,\n end: end + 1,\n assemblyName: region.assemblyName,\n })\n .pipe(toArray())\n .toPromise()\n regionSeq = feat?.get('seq')\n }\n\n const bins = await features\n .pipe(\n reduce(\n (bins, feature) => {\n const cigar = feature.get('CIGAR')\n const fstart = feature.get('start')\n const fend = feature.get('end')\n const fstrand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n\n for (let j = fstart; j < fend + 1; j++) {\n const i = j - region.start\n if (i >= 0 && i < binMax) {\n const bin = bins[i] || {\n total: 0,\n lowqual: {} as BinType,\n cov: {} as BinType,\n delskips: {} as BinType,\n noncov: {} as BinType,\n ref: {} as BinType,\n }\n if (j !== fend) {\n bin.total++\n inc(bin, fstrand, 'ref', 'ref')\n }\n bins[i] = bin\n }\n }\n\n if (colorBy?.type === 'modifications') {\n const seq = feature.get('seq')\n const mm = getTagAlt(feature, 'MM', 'Mm') || ''\n\n const ml =\n (getTagAlt(feature, 'ML', 'Ml') as number[] | string) || []\n\n const probabilities = ml\n ? (typeof ml === 'string'\n ? ml.split(',').map(e => +e)\n : ml\n ).map(e => e / 255)\n : (getTagAlt(feature, 'MP', 'Mp') as string)\n .split('')\n .map(s => s.charCodeAt(0) - 33)\n .map(elt => Math.min(1, elt / 50))\n\n let probIndex = 0\n getModificationPositions(mm, seq, fstrand).forEach(\n ({ type, positions }) => {\n const mod = `mod_${type}`\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - region.start\n if (\n epos >= 0 &&\n epos < bins.length &&\n pos + fstart < fend\n ) {\n const bin = bins[epos] || {\n total: 0,\n lowqual: {} as BinType,\n cov: {} as BinType,\n delskips: {} as BinType,\n noncov: {} as BinType,\n ref: {} as BinType,\n }\n\n if (probabilities[probIndex] > 0.5) {\n inc(bin, fstrand, 'cov', mod)\n } else {\n inc(bin, fstrand, 'lowqual', mod)\n }\n }\n probIndex++\n }\n },\n )\n }\n\n // methylation based coloring takes into account both reference\n // sequence CpG detection and reads\n else if (colorBy?.type === 'methylation') {\n if (!regionSeq) {\n throw new Error(\n 'no region sequence detected, need sequenceAdapter configuration',\n )\n }\n const seq = feature.get('seq')\n const mm = getTagAlt(feature, 'MM', 'Mm') || ''\n const methBins = new Array(region.end - region.start).fill(0)\n\n getModificationPositions(mm, seq, fstrand).forEach(\n ({ type, positions }) => {\n // we are processing methylation\n if (type === 'm') {\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - region.start\n if (epos >= 0 && epos < methBins.length) {\n methBins[epos] = 1\n }\n }\n }\n },\n )\n\n for (let j = fstart; j < fend; j++) {\n const i = j - region.start\n if (i >= 0 && i < bins.length - 1) {\n const l1 = regionSeq[i].toLowerCase()\n const l2 = regionSeq[i + 1].toLowerCase()\n const bin = bins[i]\n const bin1 = bins[i + 1]\n\n // color\n if (l1 === 'c' && l2 === 'g') {\n if (methBins[i] || methBins[i + 1]) {\n inc(bin, fstrand, 'cov', 'meth')\n inc(bin1, fstrand, 'cov', 'meth')\n dec(bin, fstrand, 'ref', 'ref')\n dec(bin1, fstrand, 'ref', 'ref')\n } else {\n inc(bin, fstrand, 'cov', 'unmeth')\n inc(bin1, fstrand, 'cov', 'unmeth')\n dec(bin, fstrand, 'ref', 'ref')\n dec(bin1, fstrand, 'ref', 'ref')\n }\n }\n }\n }\n }\n\n // normal SNP based coloring\n else {\n const mismatches = feature.get('mismatches') as\n | Mismatch[]\n | undefined\n\n if (mismatches) {\n for (let i = 0; i < mismatches.length; i++) {\n const mismatch = mismatches[i]\n const ms = fstart + mismatch.start\n for (let j = ms; j < ms + mismatchLen(mismatch); j++) {\n const epos = j - region.start\n if (epos >= 0 && epos < bins.length) {\n const bin = bins[epos]\n const { base, type } = mismatch\n const interbase = isInterbase(type)\n if (!interbase) {\n dec(bin, fstrand, 'ref', 'ref')\n } else {\n inc(bin, fstrand, 'noncov', type)\n }\n\n if (type === 'deletion' || type === 'skip') {\n inc(bin, fstrand, 'delskips', type)\n bin.total--\n } else if (!interbase) {\n inc(bin, fstrand, 'cov', base)\n }\n }\n }\n }\n\n mismatches\n .filter(mismatch => mismatch.type === 'skip')\n .forEach(mismatch => {\n const mstart = feature.get('start') + mismatch.start\n const start = mstart\n const end = mstart + mismatch.length\n const strand = feature.get('strand')\n const hash = `${start}_${end}_${strand}`\n if (!skipmap[hash]) {\n skipmap[hash] = {\n feature: feature,\n start,\n end,\n strand,\n xs: getTag(feature, 'XS') || getTag(feature, 'TS'),\n score: 1,\n }\n } else {\n skipmap[hash].score++\n }\n })\n }\n }\n\n return bins\n },\n [] as {\n total: number\n lowqual: BinType\n cov: BinType\n delskips: BinType\n noncov: BinType\n ref: BinType\n }[],\n ),\n )\n .toPromise()\n\n return { bins, skipmap }\n }\n}\n\nconst { capabilities } = SNPCoverageAdapter\nexport { capabilities }\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchemaFactory from './configSchema'\nimport { capabilities } from './SNPCoverageAdapter'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'SNPCoverageAdapter',\n adapterMetadata: {\n category: null,\n displayName: null,\n hiddenFromGUI: true,\n description: null,\n },\n getAdapterClass: () =>\n import('./SNPCoverageAdapter').then(r => r.default),\n configSchema: configSchemaFactory(pluginManager),\n adapterCapabilities: capabilities,\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport default ConfigurationSchema(\n 'SNPCoverageRenderer',\n {\n clipColor: {\n type: 'color',\n description: 'the color of the clipping marker',\n defaultValue: 'red',\n },\n indicatorThreshold: {\n type: 'number',\n description:\n 'the proportion of reads containing a insertion/clip indicator',\n defaultValue: 0.4,\n },\n drawArcs: {\n type: 'boolean',\n description: 'Draw sashimi-style arcs for intron features',\n defaultValue: true,\n },\n drawInterbaseCounts: {\n type: 'boolean',\n description:\n 'draw count \"upsidedown histogram\" of the interbase events that don\\'t contribute to the coverage count so are not drawn in the normal histogram',\n defaultValue: true,\n },\n drawIndicators: {\n type: 'boolean',\n description:\n 'draw a triangular indicator where an event has been detected',\n defaultValue: true,\n },\n },\n { explicitlyTyped: true },\n)\n","import { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { featureSpanPx, bpSpanPx } from '@jbrowse/core/util'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\nimport {\n getOrigin,\n getScale,\n ScaleOpts,\n WiggleBaseRenderer,\n YSCALEBAR_LABEL_OFFSET,\n} from '@jbrowse/plugin-wiggle'\n\nexport interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {\n bpPerPx: number\n height: number\n highResolutionScaling: number\n scaleOpts: ScaleOpts\n}\n\nexport interface RenderArgsDeserializedWithFeatures\n extends RenderArgsDeserialized {\n features: Map<string, Feature>\n ticks: { values: number[] }\n displayCrossHatches: boolean\n modificationTagMap?: Record<string, string>\n}\n\ntype Counts = {\n [key: string]: { total: number; strands: { [key: string]: number } }\n}\n\ninterface SNPInfo {\n cov: Counts\n noncov: Counts\n total: number\n}\n\nexport default class SNPCoverageRenderer extends WiggleBaseRenderer {\n // note: the snps are drawn on linear scale even if the data is drawn in log\n // scape hence the two different scales being used\n draw(\n ctx: CanvasRenderingContext2D,\n props: RenderArgsDeserializedWithFeatures,\n ) {\n const {\n features,\n regions,\n bpPerPx,\n displayCrossHatches,\n modificationTagMap = {},\n scaleOpts,\n height: unadjustedHeight,\n theme: configTheme,\n config: cfg,\n ticks,\n } = props\n const theme = createJBrowseTheme(configTheme)\n const [region] = regions\n const width = (region.end - region.start) / bpPerPx\n\n // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n // wiggle display, and makes the height of the actual drawn area add\n // \"padding\" to the top and bottom of the display\n const offset = YSCALEBAR_LABEL_OFFSET\n const height = unadjustedHeight - offset * 2\n\n const { domain } = scaleOpts\n if (!domain) {\n return\n }\n const opts = { ...scaleOpts, range: [0, height] }\n const viewScale = getScale(opts)\n const snpViewScale = getScale({\n ...opts,\n range: [0, height],\n scaleType: 'linear',\n })\n // clipping and insertion indicators, uses a smaller height/2 scale\n const indicatorViewScale = getScale({\n ...opts,\n range: [0, height / 2],\n scaleType: 'linear',\n })\n const originY = getOrigin(scaleOpts.scaleType)\n const snpOriginY = getOrigin('linear')\n\n const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold')\n const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts')\n const drawArcs = readConfObject(cfg, 'drawArcs')\n const drawIndicators = readConfObject(cfg, 'drawIndicators')\n\n // get the y coordinate that we are plotting at, this can be log scale\n const toY = (n: number) => height - (viewScale(n) || 0) + offset\n const toHeight = (n: number) => toY(originY) - toY(n)\n\n // this is always linear scale, even when plotted on top of log scale\n const snpToY = (n: number) => height - (snpViewScale(n) || 0) + offset\n const indicatorToY = (n: number) =>\n height - (indicatorViewScale(n) || 0) + offset\n const snpToHeight = (n: number) => snpToY(snpOriginY) - snpToY(n)\n const indicatorToHeight = (n: number) =>\n indicatorToY(snpOriginY) - indicatorToY(n)\n\n const colorForBase: { [key: string]: string } = {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n total: 'lightgrey',\n insertion: 'purple',\n softclip: 'blue',\n hardclip: 'red',\n meth: 'red',\n unmeth: 'blue',\n ref: 'lightgrey',\n }\n\n const feats = [...features.values()]\n const coverage = feats.filter(f => f.get('type') !== 'skip')\n const skips = feats.filter(f => f.get('type') === 'skip')\n\n // Use two pass rendering, which helps in visualizing the SNPs at higher\n // bpPerPx First pass: draw the gray background\n ctx.fillStyle = colorForBase.total\n for (let i = 0; i < coverage.length; i++) {\n const feature = coverage[i]\n const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n const w = rightPx - leftPx + 0.3\n const score = feature.get('score') as number\n ctx.fillRect(leftPx, toY(score), w, toHeight(score))\n }\n\n // Keep track of previous total which we will use it to draw the interbase\n // indicator (if there is a sudden clip, there will be no read coverage but\n // there will be \"clip\" coverage) at that position beyond the read. if the\n // clip is right at a block boundary then prevTotal will not be available,\n // so this is a best attempt to plot interbase indicator at the \"cliffs\"\n let prevTotal = 0\n\n // extraHorizontallyFlippedOffset is used to draw interbase items, which\n // are located to the left when forward and right when reversed\n const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0\n\n // Second pass: draw the SNP data, and add a minimum feature width of 1px\n // which can be wider than the actual bpPerPx This reduces overdrawing of\n // the grey background over the SNPs\n\n for (let i = 0; i < coverage.length; i++) {\n const feature = coverage[i]\n const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n const snpinfo = feature.get('snpinfo') as SNPInfo\n const w = Math.max(rightPx - leftPx + 0.3, 1)\n const totalScore = snpinfo.total\n const keys = Object.keys(snpinfo.cov).sort()\n\n let curr = 0\n for (let i = 0; i < keys.length; i++) {\n const base = keys[i]\n const { total } = snpinfo.cov[base]\n ctx.fillStyle =\n colorForBase[base] ||\n modificationTagMap[base.replace('mod_', '')] ||\n '#888'\n ctx.fillRect(leftPx, snpToY(total + curr), w, snpToHeight(total))\n curr += total\n }\n\n const interbaseEvents = Object.keys(snpinfo.noncov)\n const indicatorHeight = 4.5\n if (drawInterbaseCounts) {\n let curr = 0\n for (let i = 0; i < interbaseEvents.length; i++) {\n const base = interbaseEvents[i]\n const { total } = snpinfo.noncov[base]\n ctx.fillStyle = colorForBase[base]\n ctx.fillRect(\n leftPx - 0.6 + extraHorizontallyFlippedOffset,\n indicatorHeight + indicatorToHeight(curr),\n 1.2,\n indicatorToHeight(total),\n )\n curr += total\n }\n }\n\n if (drawIndicators) {\n let accum = 0\n let max = 0\n let maxBase = ''\n for (let i = 0; i < interbaseEvents.length; i++) {\n const base = interbaseEvents[i]\n const { total } = snpinfo.noncov[base]\n accum += total\n if (total > max) {\n max = total\n maxBase = base\n }\n }\n\n // avoid drawing a bunch of indicators if coverage is very low e.g.\n // less than 7, uses the prev total in the case of the \"cliff\"\n const indicatorComparatorScore = Math.max(totalScore, prevTotal)\n if (\n accum > indicatorComparatorScore * indicatorThreshold &&\n indicatorComparatorScore > 7\n ) {\n ctx.fillStyle = colorForBase[maxBase]\n ctx.beginPath()\n const l = leftPx + extraHorizontallyFlippedOffset\n ctx.moveTo(l - 3.5, 0)\n ctx.lineTo(l + 3.5, 0)\n ctx.lineTo(l, indicatorHeight)\n ctx.fill()\n }\n }\n prevTotal = totalScore\n }\n\n if (drawArcs) {\n for (let i = 0; i < skips.length; i++) {\n const f = skips[i]\n const [left, right] = bpSpanPx(\n f.get('start'),\n f.get('end'),\n region,\n bpPerPx,\n )\n\n ctx.beginPath()\n const str = f.get('strand') as number\n const xs = f.get('xs') as string\n const pos = 'rgba(255,200,200,0.7)'\n const neg = 'rgba(200,200,255,0.7)'\n const neutral = 'rgba(200,200,200,0.7)'\n\n if (xs === '+') {\n ctx.strokeStyle = pos\n } else if (xs === '-') {\n ctx.strokeStyle = neg\n } else if (str === 1) {\n ctx.strokeStyle = pos\n } else if (str === -1) {\n ctx.strokeStyle = neg\n } else {\n ctx.strokeStyle = neutral\n }\n\n ctx.lineWidth = Math.log(f.get('score') + 1)\n ctx.moveTo(left, height - offset * 2)\n ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2)\n ctx.stroke()\n }\n }\n\n if (displayCrossHatches) {\n ctx.lineWidth = 1\n ctx.strokeStyle = 'rgba(140,140,140,0.8)'\n ticks.values.forEach(tick => {\n ctx.beginPath()\n ctx.moveTo(0, Math.round(toY(tick)))\n ctx.lineTo(width, Math.round(toY(tick)))\n ctx.stroke()\n })\n }\n }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport ConfigSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport SNPCoverageRenderer from './SNPCoverageRenderer'\n\nimport { WiggleRendering } from '@jbrowse/plugin-wiggle'\n\nexport const configSchema = ConfigurationSchema(\n 'SNPCoverageRenderer',\n {},\n { baseConfiguration: ConfigSchema, explicitlyTyped: true },\n)\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addRendererType(\n () =>\n new SNPCoverageRenderer({\n name: 'SNPCoverageRenderer',\n ReactComponent: WiggleRendering,\n configSchema,\n pluginManager,\n }),\n )\n}\n","import { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { doesIntersect2 } from '@jbrowse/core/util/range'\nimport { Mismatch } from '../BamAdapter/MismatchParser'\n\ninterface SortObject {\n pos: number\n type: string\n tag?: string\n}\nexport const sortFeature = (\n features: Map<string, Feature>,\n sortedBy: SortObject,\n) => {\n const featureArray = Array.from(features.values())\n const featuresInCenterLine: Feature[] = []\n const featuresOutsideCenter: Feature[] = []\n const { pos, type } = sortedBy\n\n // only sort on features that intersect center line, append those outside post-sort\n featureArray.forEach(innerArray => {\n const feature = innerArray\n const start = feature.get('start')\n const end = feature.get('end')\n if (doesIntersect2(pos - 1, pos, start, end)) {\n featuresInCenterLine.push(innerArray)\n } else {\n featuresOutsideCenter.push(innerArray)\n }\n })\n\n const isCram = featureArray.length ? featureArray[0].get('tags') : false\n switch (type) {\n case 'Start location': {\n featuresInCenterLine.sort((a, b) => a.get('start') - b.get('start'))\n break\n }\n\n case 'tag': {\n const tag = sortedBy.tag as string\n const getTag = (f: Feature, t: string) => {\n return isCram ? f.get('tags')[t] : f.get(t)\n }\n const isString =\n featuresInCenterLine[0] &&\n typeof getTag(featuresInCenterLine[0], tag) === 'string'\n if (isString) {\n featuresInCenterLine.sort((a, b) =>\n getTag(b, tag).localeCompare(getTag(a, tag)),\n )\n } else {\n featuresInCenterLine.sort(\n (a, b) => (getTag(b, tag) || 0) - (getTag(a, tag) || 0),\n )\n }\n break\n }\n\n // first sort all mismatches, then all reference bases at the end\n case 'Base pair': {\n const baseSortArray: [string, Mismatch][] = []\n featuresInCenterLine.forEach(feature => {\n const mismatches: Mismatch[] = feature.get('mismatches')\n mismatches.forEach(mismatch => {\n const start = feature.get('start')\n const offset = start + mismatch.start + 1\n const consuming =\n mismatch.type === 'insertion' || mismatch.type === 'softclip'\n const len = consuming ? 0 : mismatch.length\n if (pos >= offset && pos < offset + len) {\n baseSortArray.push([feature.id(), mismatch])\n }\n })\n })\n\n const baseMap = new Map(baseSortArray)\n featuresInCenterLine.sort((a, b) => {\n const aMismatch = baseMap.get(a.id())\n const bMismatch = baseMap.get(b.id())\n const acode = bMismatch && bMismatch.base.toUpperCase()\n const bcode = aMismatch && aMismatch.base.toUpperCase()\n if (acode === bcode && acode === '*') {\n // @ts-ignore\n return aMismatch.length - bMismatch.length\n }\n return (\n (acode ? acode.charCodeAt(0) : 0) - (bcode ? bcode.charCodeAt(0) : 0)\n )\n })\n\n break\n }\n\n // sorts positive strands then negative strands\n case 'Read strand': {\n featuresInCenterLine.sort((a, b) =>\n a.get('strand') <= b.get('strand') ? 1 : -1,\n )\n break\n }\n }\n\n const sortedMap = new Map(\n featuresInCenterLine\n .concat(featuresOutsideCenter)\n .map(feature => [feature.id(), feature]),\n )\n\n return sortedMap\n}\n","import deepEqual from 'fast-deep-equal'\nimport { LayoutSession } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport GranularRectLayout from '@jbrowse/core/util/layouts/GranularRectLayout'\nimport MultiLayout from '@jbrowse/core/util/layouts/MultiLayout'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nexport interface PileupLayoutSessionProps {\n config: AnyConfigurationModel\n bpPerPx: number\n filters: SerializableFilterChain\n sortedBy: unknown\n showSoftClip: unknown\n}\n\ntype MyMultiLayout = MultiLayout<GranularRectLayout<unknown>, unknown>\ninterface CachedPileupLayout {\n layout: MyMultiLayout\n config: AnyConfigurationModel\n filters: SerializableFilterChain\n sortedBy: unknown\n showSoftClip: boolean\n}\n// Sorting and revealing soft clip changes the layout of Pileup renderer\n// Adds extra conditions to see if cached layout is valid\nexport class PileupLayoutSession extends LayoutSession {\n sortedBy: unknown\n\n showSoftClip = false\n\n constructor(args: PileupLayoutSessionProps) {\n super(args)\n this.config = args.config\n }\n\n cachedLayoutIsValid(cachedLayout: CachedPileupLayout) {\n return (\n super.cachedLayoutIsValid(cachedLayout) &&\n this.showSoftClip === cachedLayout.showSoftClip &&\n deepEqual(this.sortedBy, cachedLayout.sortedBy)\n )\n }\n\n cachedLayout: CachedPileupLayout | undefined\n\n get layout(): MyMultiLayout {\n if (!this.cachedLayout || !this.cachedLayoutIsValid(this.cachedLayout)) {\n this.cachedLayout = {\n layout: this.makeLayout(),\n config: readConfObject(this.config),\n filters: this.filters,\n sortedBy: this.sortedBy,\n showSoftClip: this.showSoftClip,\n }\n }\n return this.cachedLayout.layout\n }\n}\n","import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport { toArray } from 'rxjs/operators'\nimport BoxRendererType, {\n RenderArgs,\n RenderArgsSerialized,\n RenderArgsDeserialized as BoxRenderArgsDeserialized,\n RenderResults,\n ResultsSerialized,\n ResultsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport { Theme } from '@material-ui/core'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { bpSpanPx, iterMap } from '@jbrowse/core/util'\nimport Color from 'color'\nimport { Region } from '@jbrowse/core/util/types'\nimport { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'\nimport { BaseLayout } from '@jbrowse/core/util/layouts/BaseLayout'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\n// locals\nimport {\n Mismatch,\n parseCigar,\n getModificationPositions,\n getNextRefPos,\n} from '../BamAdapter/MismatchParser'\nimport { sortFeature } from './sortUtil'\nimport { getTagAlt, orientationTypes } from '../util'\nimport {\n PileupLayoutSession,\n PileupLayoutSessionProps,\n} from './PileupLayoutSession'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\n\nfunction getColorBaseMap(theme: Theme) {\n return {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n deletion: '#808080', // gray\n }\n}\n\nexport interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {\n colorBy?: { type: string; tag?: string }\n colorTagMap?: Record<string, string>\n modificationTagMap?: Record<string, string>\n sortedBy?: {\n type: string\n pos: number\n refName: string\n assemblyName: string\n tag?: string\n }\n showSoftClip: boolean\n highResolutionScaling: number\n}\n\nexport interface RenderArgsDeserializedWithFeaturesAndLayout\n extends RenderArgsDeserialized {\n features: Map<string, Feature>\n layout: BaseLayout<Feature>\n regionSequence?: string\n}\n\ninterface LayoutRecord {\n feature: Feature\n leftPx: number\n rightPx: number\n topPx: number\n heightPx: number\n}\n\nconst alignmentColoring: { [key: string]: string } = {\n color_fwd_strand_not_proper: '#ECC8C8',\n color_rev_strand_not_proper: '#BEBED8',\n color_fwd_strand: '#EC8B8B',\n color_rev_strand: '#8F8FD8',\n color_fwd_missing_mate: '#D11919',\n color_rev_missing_mate: '#1919D1',\n color_fwd_diff_chr: '#000',\n color_rev_diff_chr: '#969696',\n color_pair_lr: '#c8c8c8',\n color_pair_rr: 'navy',\n color_pair_rl: 'teal',\n color_pair_ll: 'green',\n color_nostrand: '#c8c8c8',\n color_interchrom: 'orange',\n color_longinsert: 'red',\n color_shortinsert: 'pink',\n}\n\ninterface LayoutFeature {\n heightPx: number\n topPx: number\n feature: Feature\n}\n\nfunction shouldDrawMismatches(type?: string) {\n return !['methylation', 'modifications'].includes(type || '')\n}\n\nexport default class PileupRenderer extends BoxRendererType {\n supportsSVG = true\n\n // get width and height of chars the height is an approximation: width\n // letter M is approximately the height\n getCharWidthHeight(ctx: CanvasRenderingContext2D) {\n const charWidth = ctx.measureText('A').width\n const charHeight = ctx.measureText('M').width\n return { charWidth, charHeight }\n }\n\n layoutFeature({\n feature,\n layout,\n bpPerPx,\n region,\n showSoftClip,\n heightPx,\n displayMode,\n }: {\n feature: Feature\n layout: BaseLayout<Feature>\n bpPerPx: number\n region: Region\n showSoftClip?: boolean\n heightPx: number\n displayMode: string\n }): LayoutRecord | null {\n let expansionBefore = 0\n let expansionAfter = 0\n\n // Expand the start and end of feature when softclipping enabled\n if (showSoftClip) {\n const mismatches = feature.get('mismatches') as Mismatch[]\n const seq = feature.get('seq') as string\n if (seq) {\n for (let i = 0; i < mismatches.length; i += 1) {\n const { type, start, cliplen = 0 } = mismatches[i]\n if (type === 'softclip') {\n start === 0\n ? (expansionBefore = cliplen)\n : (expansionAfter = cliplen)\n }\n }\n }\n }\n\n const [leftPx, rightPx] = bpSpanPx(\n feature.get('start') - expansionBefore,\n feature.get('end') + expansionAfter,\n region,\n bpPerPx,\n )\n\n if (displayMode === 'compact') {\n heightPx /= 3\n }\n if (feature.get('refName') !== region.refName) {\n throw new Error(\n `feature ${feature.id()} is not on the current region's reference sequence ${\n region.refName\n }`,\n )\n }\n const topPx = layout.addRect(\n feature.id(),\n feature.get('start') - expansionBefore,\n feature.get('end') + expansionAfter,\n heightPx,\n )\n if (topPx === null) {\n return null\n }\n\n return {\n feature,\n leftPx,\n rightPx,\n topPx: displayMode === 'collapse' ? 0 : topPx,\n heightPx,\n }\n }\n\n // expands region for clipping to use. possible improvement: use average read\n // size to set the heuristic maxClippingSize expansion (e.g. short reads\n // don't have to expand a softclipping size a lot, but long reads might)\n getExpandedRegion(region: Region, renderArgs: RenderArgsDeserialized) {\n const { config, showSoftClip } = renderArgs\n\n const maxClippingSize = readConfObject(config, 'maxClippingSize')\n const { start, end } = region\n const len = end - start\n const bpExpansion = Math.max(\n len,\n showSoftClip ? Math.round(maxClippingSize) : 0,\n )\n\n return {\n ...region,\n start: Math.floor(Math.max(start - bpExpansion, 0)),\n end: Math.ceil(end + bpExpansion),\n }\n }\n\n colorByOrientation(feature: Feature, config: AnyConfigurationModel) {\n return alignmentColoring[\n this.getOrientation(feature, config) || 'color_nostrand'\n ]\n }\n\n getOrientation(feature: Feature, config: AnyConfigurationModel) {\n const orientationType = readConfObject(config, 'orientationType') as\n | 'fr'\n | 'ff'\n | 'rf'\n const type = orientationTypes[orientationType]\n const orientation = type[feature.get('pair_orientation') as string]\n const map: { [key: string]: string } = {\n LR: 'color_pair_lr',\n RR: 'color_pair_rr',\n RL: 'color_pair_rl',\n LL: 'color_pair_ll',\n }\n return map[orientation]\n }\n\n colorByInsertSize(feature: Feature, _config: AnyConfigurationModel) {\n return feature.get('is_paired') &&\n feature.get('seq_id') !== feature.get('next_seq_id')\n ? '#555'\n : `hsl(${Math.abs(feature.get('template_length')) / 10},50%,50%)`\n }\n\n colorByStranded(feature: Feature, _config: AnyConfigurationModel) {\n const flags = feature.get('flags')\n const strand = feature.get('strand')\n // is paired\n if (flags & 1) {\n const revflag = flags & 64\n const flipper = revflag ? -1 : 1\n // proper pairing\n if (flags & 2) {\n return strand * flipper === 1 ? 'color_rev_strand' : 'color_fwd_strand'\n }\n if (feature.get('multi_segment_next_segment_unmapped')) {\n return strand * flipper === 1\n ? 'color_rev_missing_mate'\n : 'color_fwd_missing_mate'\n }\n if (feature.get('seq_id') === feature.get('next_seq_id')) {\n return strand * flipper === 1\n ? 'color_rev_strand_not_proper'\n : 'color_fwd_strand_not_proper'\n }\n // should only leave aberrant chr\n return strand === 1 ? 'color_fwd_diff_chr' : 'color_rev_diff_chr'\n }\n return strand === 1 ? 'color_fwd_strand' : 'color_rev_strand'\n }\n\n colorByPerBaseQuality(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n ) {\n const { feature, topPx, heightPx } = feat\n const qual: string = feature.get('qual') || ''\n const scores = qual.split(' ').map(val => +val)\n const cigarOps = parseCigar(feature.get('CIGAR'))\n const width = 1 / bpPerPx\n const start = feature.get('start')\n\n for (let i = 0, j = 0, k = 0; k < scores.length; i += 2, k++) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n k += len\n } else if (op === 'D' || op === 'N') {\n j += len\n } else if (op === 'M' || op === 'X' || op === '=') {\n for (let m = 0; m < len; m++) {\n const score = scores[k + m]\n ctx.fillStyle = `hsl(${score === 255 ? 150 : score * 1.5},55%,50%)`\n const [leftPx] = bpSpanPx(\n start + j + m,\n start + j + m + 1,\n region,\n bpPerPx,\n )\n ctx.fillRect(leftPx, topPx, width + 0.5, heightPx)\n }\n j += len\n }\n }\n }\n\n // ML stores probabilities as array of numerics and MP is scaled phred scores\n // https://github.com/samtools/hts-specs/pull/418/files#diff-e765c6479316309f56b636f88189cdde8c40b854c7bdcce9ee7fe87a4e76febcR596\n //\n // if we have ML or Ml, it is an 8bit probability, divide by 255\n //\n // if we have MP or Mp it is phred scaled ASCII, which can go up to 90 but\n // has very high likelihood basecalls at that point, we really only care\n // about low qual calls <20 approx\n //\n colorByModifications(\n ctx: CanvasRenderingContext2D,\n layoutFeature: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { feature, topPx, heightPx } = layoutFeature\n const { modificationTagMap = {} } = props\n\n const mm = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n\n const ml = (getTagAlt(feature, 'ML', 'Ml') as number[] | string) || []\n\n const probabilities = ml\n ? (typeof ml === 'string' ? ml.split(',').map(e => +e) : ml).map(\n e => e / 255,\n )\n : (getTagAlt(feature, 'MP', 'Mp') as string)\n .split('')\n .map(s => s.charCodeAt(0) - 33)\n .map(elt => Math.min(1, elt / 50))\n\n const cigar = feature.get('CIGAR')\n const start = feature.get('start')\n const end = feature.get('end')\n const seq = feature.get('seq')\n const strand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n\n const modifications = getModificationPositions(mm, seq, strand)\n\n // probIndex applies across multiple modifications e.g.\n let probIndex = 0\n for (let i = 0; i < modifications.length; i++) {\n const { type, positions } = modifications[i]\n const col = modificationTagMap[type] || 'black'\n const base = Color(col)\n for (const readPos of getNextRefPos(cigarOps, positions)) {\n if (readPos >= 0 && start + readPos < end) {\n const [leftPx, rightPx] = bpSpanPx(\n start + readPos,\n start + readPos + 1,\n region,\n bpPerPx,\n )\n\n // give it a little boost of 0.1 to not make them fully\n // invisible to avoid confusion\n ctx.fillStyle = base\n .alpha(probabilities[probIndex] + 0.1)\n .hsl()\n .string()\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n }\n probIndex++\n }\n }\n }\n\n // Color by methylation is slightly modified version of color by\n // modifications\n //\n colorByMethylation(\n ctx: CanvasRenderingContext2D,\n layoutFeature: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { regionSequence } = props\n const { feature, topPx, heightPx } = layoutFeature\n\n const mm: string = getTagAlt(feature, 'MM', 'Mm') || ''\n\n if (!regionSequence) {\n throw new Error('region sequence required for methylation')\n }\n\n const cigar = feature.get('CIGAR')\n const fstart = feature.get('start')\n const fend = feature.get('end')\n const seq = feature.get('seq')\n const strand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n const { start: rstart, end: rend } = region\n\n const methBins = new Array(rend - rstart).fill(0)\n const modifications = getModificationPositions(mm, seq, strand)\n for (let i = 0; i < modifications.length; i++) {\n const { type, positions } = modifications[i]\n if (type === 'm' && positions) {\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - rstart\n if (epos >= 0 && epos < methBins.length) {\n methBins[epos] = 1\n }\n }\n }\n }\n\n for (let j = fstart; j < fend; j++) {\n const i = j - rstart\n if (i >= 0 && i < methBins.length) {\n const l1 = regionSequence[i].toLowerCase()\n const l2 = regionSequence[i + 1].toLowerCase()\n\n // if we are zoomed out, display just a block over the cpg\n if (bpPerPx > 2) {\n if (l1 === 'c' && l2 === 'g') {\n const s = rstart + i\n const [leftPx, rightPx] = bpSpanPx(s, s + 2, region, bpPerPx)\n if (methBins[i] || methBins[i + 1]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n }\n }\n // if we are zoomed in, color the c inside the cpg\n else {\n // color\n if (l1 === 'c' && l2 === 'g') {\n const s = rstart + i\n const [leftPx, rightPx] = bpSpanPx(s, s + 1, region, bpPerPx)\n if (methBins[i]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n\n const [leftPx2, rightPx2] = bpSpanPx(s + 1, s + 2, region, bpPerPx)\n if (methBins[i + 1]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx2, topPx, rightPx2 - leftPx2 + 0.5, heightPx)\n }\n }\n }\n }\n }\n\n drawRect(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserialized,\n ) {\n const { regions, bpPerPx } = props\n const { heightPx, topPx, feature } = feat\n const [region] = regions\n const [leftPx, rightPx] = bpSpanPx(\n feature.get('start'),\n feature.get('end'),\n region,\n bpPerPx,\n )\n const flip = region.reversed ? -1 : 1\n const strand = feature.get('strand') * flip\n if (bpPerPx < 10) {\n if (strand === -1) {\n ctx.beginPath()\n ctx.moveTo(leftPx - 5, topPx + heightPx / 2)\n ctx.lineTo(leftPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx)\n ctx.lineTo(leftPx, topPx)\n ctx.closePath()\n ctx.fill()\n } else {\n ctx.beginPath()\n ctx.moveTo(leftPx, topPx)\n ctx.lineTo(leftPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx + heightPx)\n ctx.lineTo(rightPx + 5, topPx + heightPx / 2)\n ctx.lineTo(rightPx, topPx)\n ctx.closePath()\n ctx.fill()\n }\n } else {\n ctx.fillRect(leftPx, topPx, rightPx - leftPx, heightPx)\n }\n }\n\n drawAlignmentRect(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout & {\n defaultColor: boolean\n },\n ) {\n const {\n defaultColor,\n config,\n bpPerPx,\n regions,\n colorBy,\n colorTagMap = {},\n } = props\n const { tag = '', type: colorType = '' } = colorBy || {}\n const { feature } = feat\n const region = regions[0]\n\n // first pass for simple color changes that change the color of the\n // alignment\n switch (colorType) {\n case 'insertSize':\n ctx.fillStyle = this.colorByInsertSize(feature, config)\n break\n case 'strand':\n ctx.fillStyle = feature.get('strand') === -1 ? '#8F8FD8' : '#EC8B8B'\n break\n case 'mappingQuality':\n ctx.fillStyle = `hsl(${feature.get('mq')},50%,50%)`\n break\n\n case 'pairOrientation':\n ctx.fillStyle = this.colorByOrientation(feature, config)\n break\n case 'stranded':\n ctx.fillStyle = alignmentColoring[this.colorByStranded(feature, config)]\n break\n case 'xs':\n case 'tag': {\n const tags = feature.get('tags')\n const val = tags ? tags[tag] : feature.get(tag)\n\n // special for for XS/TS tag\n if (tag === 'XS' || tag === 'TS') {\n const map: { [key: string]: string | undefined } = {\n '-': 'color_rev_strand',\n '+': 'color_fwd_strand',\n }\n ctx.fillStyle = alignmentColoring[map[val] || 'color_nostrand']\n }\n\n // lower case 'ts' from minimap2 is flipped from xs\n if (tag === 'ts') {\n const map: { [key: string]: string } = {\n '-':\n feature.get('strand') === -1\n ? 'color_fwd_strand'\n : 'color_rev_strand',\n '+':\n feature.get('strand') === -1\n ? 'color_rev_strand'\n : 'color_fwd_strand',\n }\n ctx.fillStyle = alignmentColoring[map[val] || 'color_nostrand']\n }\n\n // tag is not one of the autofilled tags, has color-value pairs from\n // fetchValues\n else {\n const foundValue = colorTagMap[val]\n ctx.fillStyle = foundValue || alignmentColoring['color_nostrand']\n }\n break\n }\n case 'insertSizeAndPairOrientation':\n break\n\n case 'normal':\n default:\n if (defaultColor) {\n // avoid a readConfObject call here\n ctx.fillStyle = '#c8c8c8'\n } else {\n ctx.fillStyle = readConfObject(config, 'color', { feature })\n }\n break\n }\n\n this.drawRect(ctx, feat, props)\n\n // second pass for color types that render per-base things that go over the\n // existing drawing\n switch (colorType) {\n case 'perBaseQuality':\n this.colorByPerBaseQuality(ctx, feat, config, region, bpPerPx)\n break\n\n case 'modifications':\n this.colorByModifications(ctx, feat, config, region, bpPerPx, props)\n break\n\n case 'methylation':\n this.colorByMethylation(ctx, feat, config, region, bpPerPx, props)\n break\n }\n }\n\n drawMismatches(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n theme: Theme,\n colorForBase: { [key: string]: string },\n opts: {\n mismatchAlpha?: boolean\n drawSNPs?: boolean\n drawIndels?: boolean\n minSubfeatureWidth: number\n largeInsertionIndicatorScale: number\n charWidth: number\n charHeight: number\n },\n ) {\n const {\n minSubfeatureWidth: minWidth,\n largeInsertionIndicatorScale,\n mismatchAlpha,\n drawSNPs = true,\n drawIndels = true,\n charWidth,\n charHeight,\n } = opts\n const { bpPerPx, regions } = props\n const { heightPx, topPx, feature } = feat\n const [region] = regions\n const start = feature.get('start')\n\n const pxPerBp = Math.min(1 / bpPerPx, 2)\n const w = Math.max(minWidth, pxPerBp)\n const mismatches: Mismatch[] = feature.get('mismatches')\n const heightLim = charHeight - 2\n\n function getAlphaColor(baseColor: string, mismatch: { qual?: number }) {\n let color = baseColor\n if (mismatchAlpha && mismatch.qual !== undefined) {\n color = Color(baseColor)\n .alpha(Math.min(1, mismatch.qual / 50))\n .hsl()\n .string()\n }\n return color\n }\n\n // extraHorizontallyFlippedOffset is used to draw interbase items, which\n // are located to the left when forward and right when reversed\n const extraHorizontallyFlippedOffset = region.reversed\n ? 1 / bpPerPx + 1\n : -1\n\n // two pass rendering: first pass, draw all the mismatches except wide\n // insertion markers\n for (let i = 0; i < mismatches.length; i += 1) {\n const mismatch = mismatches[i]\n const mstart = start + mismatch.start\n const mlen = mismatch.length\n const mbase = mismatch.base\n const [leftPx, rightPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n const widthPx = Math.max(minWidth, Math.abs(leftPx - rightPx))\n if (mismatch.type === 'mismatch' && drawSNPs) {\n const baseColor = colorForBase[mismatch.base] || '#888'\n\n ctx.fillStyle = getAlphaColor(baseColor, mismatch)\n\n ctx.fillRect(leftPx, topPx, widthPx, heightPx)\n\n if (widthPx >= charWidth && heightPx >= heightLim) {\n // normal SNP coloring\n ctx.fillStyle = getAlphaColor(\n theme.palette.getContrastText(baseColor),\n mismatch,\n )\n ctx.fillText(\n mbase,\n leftPx + (widthPx - charWidth) / 2 + 1,\n topPx + heightPx,\n )\n }\n } else if (mismatch.type === 'deletion' && drawIndels) {\n const baseColor = colorForBase.deletion\n ctx.fillStyle = baseColor\n ctx.fillRect(leftPx, topPx, widthPx, heightPx)\n const txt = `${mismatch.length}`\n const rect = ctx.measureText(txt)\n if (widthPx >= rect.width && heightPx >= heightLim) {\n ctx.fillStyle = theme.palette.getContrastText(baseColor)\n ctx.fillText(\n txt,\n leftPx + (rightPx - leftPx) / 2 - rect.width / 2,\n topPx + heightPx,\n )\n }\n } else if (mismatch.type === 'insertion' && drawIndels) {\n ctx.fillStyle = 'purple'\n const pos = leftPx + extraHorizontallyFlippedOffset\n const len = +mismatch.base || mismatch.length\n const insW = Math.max(minWidth, Math.min(1.2, 1 / bpPerPx))\n if (len < 10) {\n ctx.fillRect(pos, topPx, insW, heightPx)\n if (1 / bpPerPx >= charWidth) {\n ctx.fillRect(pos - insW, topPx, insW * 3, 1)\n ctx.fillRect(pos - insW, topPx + heightPx - 1, insW * 3, 1)\n }\n if (1 / bpPerPx >= charWidth && heightPx >= heightLim) {\n ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n }\n }\n } else if (mismatch.type === 'hardclip' || mismatch.type === 'softclip') {\n ctx.fillStyle = mismatch.type === 'hardclip' ? 'red' : 'blue'\n const pos = leftPx + extraHorizontallyFlippedOffset\n ctx.fillRect(pos, topPx, w, heightPx)\n if (1 / bpPerPx >= charWidth) {\n ctx.fillRect(pos - w, topPx, w * 3, 1)\n ctx.fillRect(pos - w, topPx + heightPx - 1, w * 3, 1)\n }\n if (widthPx >= charWidth && heightPx >= heightLim) {\n ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n }\n } else if (mismatch.type === 'skip') {\n // fix to avoid bad rendering note that this was also related to chrome\n // bug https://bugs.chromium.org/p/chromium/issues/detail?id=1131528\n // also affected firefox ref #1236 #2750\n if (leftPx + widthPx > 0) {\n // make small exons more visible when zoomed far out\n const adjustPx = widthPx - (bpPerPx > 10 ? 1.5 : 0)\n ctx.clearRect(leftPx, topPx, adjustPx, heightPx)\n ctx.fillStyle = '#333'\n ctx.fillRect(\n Math.max(0, leftPx),\n topPx + heightPx / 2 - 1,\n adjustPx + (leftPx < 0 ? leftPx : 0),\n 2,\n )\n }\n }\n }\n\n // second pass, draw wide insertion markers on top\n if (drawIndels) {\n for (let i = 0; i < mismatches.length; i += 1) {\n const mismatch = mismatches[i]\n const mstart = start + mismatch.start\n const mlen = mismatch.length\n const [leftPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n const len = +mismatch.base || mismatch.length\n const txt = `${len}`\n if (mismatch.type === 'insertion' && len >= 10) {\n if (bpPerPx > largeInsertionIndicatorScale) {\n ctx.fillStyle = 'purple'\n ctx.fillRect(leftPx - 1, topPx, 2, heightPx)\n } else if (heightPx > charHeight) {\n const rect = ctx.measureText(txt)\n const padding = 5\n ctx.fillStyle = 'purple'\n ctx.fillRect(\n leftPx - rect.width / 2 - padding,\n topPx,\n rect.width + 2 * padding,\n heightPx,\n )\n ctx.fillStyle = 'white'\n ctx.fillText(txt, leftPx - rect.width / 2, topPx + heightPx)\n } else {\n const padding = 2\n ctx.fillStyle = 'purple'\n ctx.fillRect(leftPx - padding, topPx, 2 * padding, heightPx)\n }\n }\n }\n }\n }\n\n drawSoftClipping(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n config: AnyConfigurationModel,\n theme: Theme,\n ) {\n const { feature, topPx, heightPx } = feat\n const { regions, bpPerPx } = props\n const [region] = regions\n const minFeatWidth = readConfObject(config, 'minSubfeatureWidth')\n const mismatches: Mismatch[] = feature.get('mismatches')\n const seq = feature.get('seq')\n const { charWidth, charHeight } = this.getCharWidthHeight(ctx)\n const colorForBase: { [key: string]: string } = {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n deletion: '#808080', // gray\n }\n\n // Display all bases softclipped off in lightened colors\n if (seq) {\n mismatches\n .filter(mismatch => mismatch.type === 'softclip')\n .forEach(mismatch => {\n const softClipLength = mismatch.cliplen || 0\n const s = feature.get('start')\n const softClipStart =\n mismatch.start === 0 ? s - softClipLength : s + mismatch.start\n\n for (let k = 0; k < softClipLength; k += 1) {\n const base = seq.charAt(k + mismatch.start)\n\n // If softclip length+start is longer than sequence, no need to\n // continue showing base\n if (!base) {\n return\n }\n\n const [softClipLeftPx, softClipRightPx] = bpSpanPx(\n softClipStart + k,\n softClipStart + k + 1,\n region,\n bpPerPx,\n )\n const softClipWidthPx = Math.max(\n minFeatWidth,\n Math.abs(softClipLeftPx - softClipRightPx),\n )\n\n // Black accounts for IUPAC ambiguity code bases such as N that\n // show in soft clipping\n const baseColor = colorForBase[base] || '#000000'\n ctx.fillStyle = baseColor\n ctx.fillRect(softClipLeftPx, topPx, softClipWidthPx, heightPx)\n\n if (softClipWidthPx >= charWidth && heightPx >= charHeight - 5) {\n ctx.fillStyle = theme.palette.getContrastText(baseColor)\n ctx.fillText(\n base,\n softClipLeftPx + (softClipWidthPx - charWidth) / 2 + 1,\n topPx + heightPx,\n )\n }\n }\n })\n }\n }\n\n async makeImageData(\n ctx: CanvasRenderingContext2D,\n layoutRecords: (LayoutFeature | null)[],\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { layout, config, showSoftClip, colorBy, theme: configTheme } = props\n const mismatchAlpha = readConfObject(config, 'mismatchAlpha')\n const minSubfeatureWidth = readConfObject(config, 'minSubfeatureWidth')\n const insertScale = readConfObject(config, 'largeInsertionIndicatorScale')\n const defaultColor = readConfObject(config, 'color') === '#f0f'\n\n const theme = createJBrowseTheme(configTheme)\n const colorForBase = getColorBaseMap(theme)\n if (!layout) {\n throw new Error(`layout required`)\n }\n if (!layout.addRect) {\n throw new Error('invalid layout object')\n }\n ctx.font = 'bold 10px Courier New,monospace'\n\n const { charWidth, charHeight } = this.getCharWidthHeight(ctx)\n layoutRecords.forEach(feat => {\n if (feat === null) {\n return\n }\n\n this.drawAlignmentRect(ctx, feat, {\n ...props,\n defaultColor,\n })\n this.drawMismatches(ctx, feat, props, theme, colorForBase, {\n mismatchAlpha,\n drawSNPs: shouldDrawMismatches(colorBy?.type),\n drawIndels: shouldDrawMismatches(colorBy?.type),\n largeInsertionIndicatorScale: insertScale,\n minSubfeatureWidth,\n charWidth,\n charHeight,\n })\n if (showSoftClip) {\n this.drawSoftClipping(ctx, feat, props, config, theme)\n }\n })\n }\n\n // we perform a full layout before render as a separate method because the\n // layout determines the height of the canvas that we use to render\n layoutFeats(props: RenderArgsDeserializedWithFeaturesAndLayout) {\n const {\n layout,\n features,\n sortedBy,\n config,\n bpPerPx,\n showSoftClip,\n regions,\n } = props\n const [region] = regions\n if (!layout) {\n throw new Error(`layout required`)\n }\n if (!layout.addRect) {\n throw new Error('invalid layout object')\n }\n\n const featureMap =\n sortedBy?.type && region.start === sortedBy.pos\n ? sortFeature(features, sortedBy)\n : features\n\n const heightPx = readConfObject(config, 'height')\n const displayMode = readConfObject(config, 'displayMode')\n const layoutRecords = iterMap(\n featureMap.values(),\n feature =>\n this.layoutFeature({\n feature,\n layout,\n bpPerPx,\n region,\n showSoftClip,\n heightPx,\n displayMode,\n }),\n featureMap.size,\n )\n return layoutRecords\n }\n\n async render(renderProps: RenderArgsDeserialized) {\n const { sessionId, bpPerPx, regions, adapterConfig } = renderProps\n const { sequenceAdapter } = adapterConfig\n const features = await this.getFeatures(renderProps)\n const layout = this.createLayoutInWorker(renderProps)\n\n const layoutRecords = this.layoutFeats({ ...renderProps, features, layout })\n const [region] = regions\n let regionSequence: string | undefined\n const { end, start, originalRefName, refName } = region\n\n if (sequenceAdapter) {\n const { dataAdapter } = await getAdapter(\n this.pluginManager,\n sessionId,\n sequenceAdapter,\n )\n\n const feats = await (dataAdapter as BaseFeatureDataAdapter)\n .getFeatures({\n ...region,\n refName: originalRefName || refName,\n end: region.end + 1,\n })\n .pipe(toArray())\n .toPromise()\n regionSequence = feats[0]?.get('seq')\n }\n\n const width = (end - start) / bpPerPx\n const height = Math.max(layout.getTotalHeight(), 1)\n\n const res = await renderToAbstractCanvas(\n width,\n height,\n renderProps,\n (ctx: CanvasRenderingContext2D) =>\n this.makeImageData(ctx, layoutRecords, {\n ...renderProps,\n layout,\n features,\n regionSequence,\n }),\n )\n\n const results = await super.render({\n ...renderProps,\n ...res,\n features,\n layout,\n height,\n width,\n })\n\n return {\n ...results,\n ...res,\n features,\n layout,\n height,\n width,\n maxHeightReached: layout.maxHeightReached,\n }\n }\n\n createSession(args: PileupLayoutSessionProps) {\n return new PileupLayoutSession(args)\n }\n}\n\nexport type {\n RenderArgs,\n RenderArgsSerialized,\n RenderResults,\n ResultsSerialized,\n ResultsDeserialized,\n}\n","import { Region } from '@jbrowse/core/util/types'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { bpSpanPx } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport React, { MouseEvent, useRef, useState, useEffect } from 'react'\nimport type { BaseLinearDisplayModel } from '@jbrowse/plugin-linear-genome-view'\n\n// used so that user can click-away-from-feature below the laid out features\n// (issue #1248)\nconst canvasPadding = 100\nfunction PileupRendering(props: {\n blockKey: string\n displayModel: BaseLinearDisplayModel\n width: number\n height: number\n regions: Region[]\n bpPerPx: number\n sortedBy?: { type: string; pos: number; refName: string }\n colorBy?: { type: string; tag?: string }\n onMouseMove?: (event: React.MouseEvent, featureId: string | undefined) => void\n}) {\n const {\n onMouseMove,\n blockKey,\n displayModel,\n width,\n height,\n regions,\n bpPerPx,\n sortedBy,\n colorBy,\n } = props\n const { selectedFeatureId, featureIdUnderMouse, contextMenuFeature } =\n displayModel\n\n const [region] = regions\n const highlightOverlayCanvas = useRef<HTMLCanvasElement>(null)\n const [mouseIsDown, setMouseIsDown] = useState(false)\n const [movedDuringLastMouseDown, setMovedDuringLastMouseDown] =\n useState(false)\n useEffect(() => {\n const canvas = highlightOverlayCanvas.current\n if (!canvas) {\n return\n }\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n return\n }\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n const selectedRect = selectedFeatureId\n ? displayModel.getFeatureByID?.(blockKey, selectedFeatureId)\n : undefined\n if (selectedRect) {\n const [leftBp, topPx, rightBp, bottomPx] = selectedRect\n const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n const rectTop = Math.round(topPx)\n const rectHeight = Math.round(bottomPx - topPx)\n ctx.shadowColor = '#222266'\n ctx.shadowBlur = 10\n ctx.lineJoin = 'bevel'\n ctx.lineWidth = 2\n ctx.strokeStyle = '#00b8ff'\n ctx.strokeRect(\n leftPx - 2,\n rectTop - 2,\n rightPx - leftPx + 4,\n rectHeight + 4,\n )\n ctx.clearRect(leftPx, rectTop, rightPx - leftPx, rectHeight)\n }\n const highlightedFeature = featureIdUnderMouse || contextMenuFeature?.id()\n const highlightedRect = highlightedFeature\n ? displayModel.getFeatureByID?.(blockKey, highlightedFeature)\n : undefined\n if (highlightedRect) {\n const [leftBp, topPx, rightBp, bottomPx] = highlightedRect\n const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n const rectTop = Math.round(topPx)\n const rectHeight = Math.round(bottomPx - topPx)\n ctx.fillStyle = '#0003'\n ctx.fillRect(leftPx, rectTop, rightPx - leftPx, rectHeight)\n }\n }, [\n bpPerPx,\n region,\n blockKey,\n selectedFeatureId,\n displayModel,\n featureIdUnderMouse,\n contextMenuFeature,\n ])\n\n function onMouseDown(event: MouseEvent) {\n setMouseIsDown(true)\n setMovedDuringLastMouseDown(false)\n callMouseHandler('MouseDown', event)\n }\n\n function onMouseEnter(event: MouseEvent) {\n callMouseHandler('MouseEnter', event)\n }\n\n function onMouseOut(event: MouseEvent) {\n callMouseHandler('MouseOut', event)\n callMouseHandler('MouseLeave', event)\n }\n\n function onMouseOver(event: MouseEvent) {\n callMouseHandler('MouseOver', event)\n }\n\n function onMouseUp(event: MouseEvent) {\n setMouseIsDown(false)\n callMouseHandler('MouseUp', event)\n }\n\n function onClick(event: MouseEvent) {\n if (!movedDuringLastMouseDown) {\n callMouseHandler('Click', event)\n }\n }\n\n function onMouseLeave(event: MouseEvent) {\n callMouseHandler('MouseOut', event)\n callMouseHandler('MouseLeave', event)\n }\n\n function onContextMenu(event: MouseEvent) {\n callMouseHandler('ContextMenu', event)\n }\n\n function mouseMove(event: MouseEvent) {\n if (mouseIsDown) {\n setMovedDuringLastMouseDown(true)\n }\n let offsetX = 0\n let offsetY = 0\n const canvas = highlightOverlayCanvas.current\n if (canvas) {\n const { left, top } = canvas.getBoundingClientRect()\n offsetX = left\n offsetY = top\n }\n offsetX = event.clientX - offsetX\n offsetY = event.clientY - offsetY\n const px = region.reversed ? width - offsetX : offsetX\n const clientBp = region.start + bpPerPx * px\n\n const featIdUnderMouse = displayModel.getFeatureOverlapping(\n blockKey,\n clientBp,\n offsetY,\n )\n\n if (onMouseMove) {\n onMouseMove(event, featIdUnderMouse)\n }\n }\n\n function callMouseHandler(handlerName: string, event: MouseEvent) {\n // @ts-ignore\n // eslint-disable-next-line react/destructuring-assignment\n const featureHandler = props[`onFeature${handlerName}`]\n // @ts-ignore\n // eslint-disable-next-line react/destructuring-assignment\n const canvasHandler = props[`on${handlerName}`]\n if (featureHandler && featureIdUnderMouse) {\n featureHandler(event, featureIdUnderMouse)\n } else if (canvasHandler) {\n canvasHandler(event, featureIdUnderMouse)\n }\n }\n\n const canvasWidth = Math.ceil(width)\n // need to call this in render so we get the right observer behavior\n return (\n <div\n className=\"PileupRendering\"\n data-testid={`pileup-${\n sortedBy || colorBy\n ? `${sortedBy?.type || ''}${colorBy?.type || ''}${colorBy?.tag || ''}`\n : 'normal'\n }`}\n style={{ position: 'relative', width: canvasWidth, height }}\n >\n <PrerenderedCanvas\n {...props}\n style={{ position: 'absolute', left: 0, top: 0 }}\n />\n <canvas\n data-testid=\"pileup_overlay_canvas\"\n width={canvasWidth}\n height={height + canvasPadding}\n style={{ position: 'absolute', left: 0, top: 0 }}\n className=\"highlightOverlayCanvas\"\n ref={highlightOverlayCanvas}\n onMouseDown={event => onMouseDown(event)}\n onMouseEnter={event => onMouseEnter(event)}\n onMouseOut={event => onMouseOut(event)}\n onMouseOver={event => onMouseOver(event)}\n onMouseUp={event => onMouseUp(event)}\n onMouseLeave={event => onMouseLeave(event)}\n onMouseMove={event => mouseMove(event)}\n onClick={event => onClick(event)}\n onContextMenu={event => onContextMenu(event)}\n onFocus={() => {}}\n onBlur={() => {}}\n />\n </div>\n )\n}\n\nexport default observer(PileupRendering)\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default ConfigurationSchema(\n 'PileupRenderer',\n {\n // default magenta here is used to detect the user has not customized this\n color: {\n type: 'color',\n description: 'the color of each feature in a pileup alignment',\n defaultValue: '#f0f',\n contextVariable: ['feature'],\n },\n orientationType: {\n type: 'stringEnum',\n model: types.enumeration('orientationType', ['fr', 'rf', 'ff']),\n defaultValue: 'fr',\n description:\n 'read sequencer orienation. fr is normal \"reads pointing at each other ---> <--- while some other sequencers can use other options',\n },\n displayMode: {\n type: 'stringEnum',\n model: types.enumeration('displayMode', [\n 'normal',\n 'compact',\n 'collapse',\n ]),\n description: 'Alternative display modes',\n defaultValue: 'normal',\n },\n minSubfeatureWidth: {\n type: 'number',\n description:\n 'the minimum width in px for a pileup mismatch feature. use for increasing mismatch marker widths when zoomed out to e.g. 1px or 0.5px',\n defaultValue: 0,\n },\n maxHeight: {\n type: 'integer',\n description: 'the maximum height to be used in a pileup rendering',\n defaultValue: 1200,\n },\n maxClippingSize: {\n type: 'integer',\n description: 'the max clip size to be used in a pileup rendering',\n defaultValue: 10000,\n },\n height: {\n type: 'number',\n description: 'the height of each feature in a pileup alignment',\n defaultValue: 7,\n contextVariable: ['feature'],\n },\n noSpacing: {\n type: 'boolean',\n description: 'remove spacing between features',\n defaultValue: false,\n },\n largeInsertionIndicatorScale: {\n type: 'number',\n description:\n 'scale at which to draw the large insertion indicators (bp/pixel)',\n defaultValue: 10,\n },\n mismatchAlpha: {\n type: 'boolean',\n defaultValue: false,\n description: 'Fade low quality mismatches',\n },\n },\n { explicitlyTyped: true },\n)\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport PileupRenderer from './PileupRenderer'\nimport ReactComponent from './components/PileupRendering'\nimport configSchema from './configSchema'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addRendererType(\n () =>\n new PileupRenderer({\n name: 'PileupRenderer',\n ReactComponent,\n configSchema,\n pluginManager,\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nconst configModelFactory = (pluginManager: PluginManager) => {\n const PileupDisplayConfigSchema = pluginManager.getDisplayType(\n 'LinearPileupDisplay',\n ).configSchema\n const SNPCoverageDisplayConfigSchema = pluginManager.getDisplayType(\n 'LinearSNPCoverageDisplay',\n ).configSchema\n\n return ConfigurationSchema(\n 'LinearAlignmentsDisplay',\n {\n pileupDisplay: PileupDisplayConfigSchema,\n snpCoverageDisplay: SNPCoverageDisplayConfigSchema,\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n\nexport type AlignmentsConfigModel = ReturnType<typeof configModelFactory>\nexport default configModelFactory\n","import React from 'react'\nimport {\n ConfigurationReference,\n AnyConfigurationModel,\n getConf,\n} from '@jbrowse/core/configuration'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { autorun, when } from 'mobx'\nimport { addDisposer, getSnapshot, Instance, types } from 'mobx-state-tree'\nimport { getContainingTrack } from '@jbrowse/core/util'\nimport deepEqual from 'fast-deep-equal'\nimport { AlignmentsConfigModel } from './configSchema'\n\nconst minDisplayHeight = 20\nconst stateModelFactory = (\n pluginManager: PluginManager,\n configSchema: AlignmentsConfigModel,\n) => {\n return types\n .compose(\n 'LinearAlignmentsDisplay',\n BaseDisplay,\n types.model({\n PileupDisplay: types.maybe(\n pluginManager.getDisplayType('LinearPileupDisplay').stateModel,\n ),\n SNPCoverageDisplay: types.maybe(\n pluginManager.getDisplayType('LinearSNPCoverageDisplay').stateModel,\n ),\n snpCovHeight: 45,\n type: types.literal('LinearAlignmentsDisplay'),\n configuration: ConfigurationReference(configSchema),\n height: 250,\n showCoverage: true,\n showPileup: true,\n userFeatureScreenDensity: types.maybe(types.number),\n }),\n )\n .volatile(() => ({\n scrollTop: 0,\n }))\n .actions(self => ({\n toggleCoverage() {\n self.showCoverage = !self.showCoverage\n },\n togglePileup() {\n self.showPileup = !self.showPileup\n },\n setScrollTop(scrollTop: number) {\n self.scrollTop = scrollTop\n },\n setSNPCoverageHeight(n: number) {\n self.snpCovHeight = n\n },\n }))\n .views(self => {\n const { trackMenuItems: superTrackMenuItems } = self\n return {\n get pileupDisplayConfig() {\n const conf = getConf(self, 'pileupDisplay')\n const track = getContainingTrack(self)\n return {\n ...conf,\n type: 'LinearPileupDisplay',\n name: `${getConf(track, 'name')} pileup`,\n displayId: `${self.configuration.displayId}_pileup_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n }\n },\n\n getFeatureByID(blockKey: string, id: string) {\n return self.PileupDisplay.getFeatureByID(blockKey, id)\n },\n searchFeatureByID(id: string) {\n return self.PileupDisplay.searchFeatureByID(id)\n },\n\n get features() {\n return self.PileupDisplay.features\n },\n\n get DisplayBlurb() {\n return self.PileupDisplay?.DisplayBlurb\n },\n\n get sortedBy() {\n return self.PileupDisplay.sortedBy\n },\n get sortedByPosition() {\n return self.PileupDisplay.sortedByPosition\n },\n get sortedByRefName() {\n return self.PileupDisplay.sortedByRefName\n },\n\n get snpCoverageDisplayConfig() {\n const conf = getConf(self, 'snpCoverageDisplay')\n const track = getContainingTrack(self)\n return {\n ...conf,\n type: 'LinearSNPCoverageDisplay',\n name: `${getConf(track, 'name')} snp coverage`,\n displayId: `${self.configuration.displayId}_snpcoverage_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n }\n },\n\n trackMenuItems(): MenuItem[] {\n return [\n ...superTrackMenuItems(),\n {\n type: 'subMenu',\n label: 'Pileup settings',\n subMenu: self.PileupDisplay.trackMenuItems(),\n },\n {\n type: 'subMenu',\n label: 'SNPCoverage settings',\n subMenu: self.SNPCoverageDisplay.trackMenuItems(),\n },\n ]\n },\n }\n })\n .actions(self => ({\n setSNPCoverageDisplay(displayConfig: AnyConfigurationModel) {\n self.SNPCoverageDisplay = {\n type: 'LinearSNPCoverageDisplay',\n configuration: displayConfig,\n height: self.snpCovHeight,\n }\n },\n setUserFeatureScreenDensity(limit: number) {\n self.PileupDisplay.setUserFeatureScreenDensity(limit)\n self.SNPCoverageDisplay.setUserFeatureScreenDensity(limit)\n },\n setPileupDisplay(displayConfig: AnyConfigurationModel) {\n self.PileupDisplay = {\n type: 'LinearPileupDisplay',\n configuration: displayConfig,\n }\n },\n setHeight(displayHeight: number) {\n if (displayHeight > minDisplayHeight) {\n self.height = displayHeight\n } else {\n self.height = minDisplayHeight\n }\n return self.height\n },\n resizeHeight(distance: number) {\n const oldHeight = self.height\n const newHeight = this.setHeight(self.height + distance)\n return newHeight - oldHeight\n },\n }))\n .actions(self => ({\n afterAttach() {\n addDisposer(\n self,\n autorun(() => {\n if (!self.SNPCoverageDisplay) {\n self.setSNPCoverageDisplay(self.snpCoverageDisplayConfig)\n } else if (\n !deepEqual(\n self.snpCoverageDisplayConfig,\n getSnapshot(self.SNPCoverageDisplay.configuration),\n )\n ) {\n self.SNPCoverageDisplay.setHeight(self.snpCovHeight)\n self.SNPCoverageDisplay.setConfig(self.snpCoverageDisplayConfig)\n }\n\n if (!self.PileupDisplay) {\n self.setPileupDisplay(self.pileupDisplayConfig)\n } else if (\n !deepEqual(\n self.pileupDisplayConfig,\n getSnapshot(self.PileupDisplay.configuration),\n )\n ) {\n self.PileupDisplay.setConfig(self.pileupDisplayConfig)\n }\n\n // propagate the filterBy setting from pileupdisplay to snpcoverage\n // note: the snpcoverage display is not able to control filterBy\n // itself\n if (\n self.PileupDisplay.filterBy &&\n !deepEqual(\n getSnapshot(self.PileupDisplay.filterBy),\n getSnapshot(self.SNPCoverageDisplay.filterBy),\n )\n ) {\n self.SNPCoverageDisplay.setFilterBy(\n getSnapshot(self.PileupDisplay.filterBy),\n )\n }\n if (\n self.PileupDisplay.colorBy &&\n !deepEqual(\n getSnapshot(self.PileupDisplay.colorBy),\n self.SNPCoverageDisplay.colorBy\n ? getSnapshot(self.SNPCoverageDisplay.colorBy)\n : {},\n )\n ) {\n self.SNPCoverageDisplay.setColorBy(\n getSnapshot(self.PileupDisplay.colorBy),\n )\n }\n }),\n )\n addDisposer(\n self,\n autorun(() => {\n self.setSNPCoverageHeight(self.SNPCoverageDisplay.height)\n }),\n )\n },\n async renderSvg(opts: { rasterizeLayers?: boolean }) {\n const pileupHeight = self.height - self.SNPCoverageDisplay.height\n await when(() => self.PileupDisplay.ready)\n return (\n <>\n <g>{await self.SNPCoverageDisplay.renderSvg(opts)}</g>\n <g transform={`translate(0 ${self.SNPCoverageDisplay.height})`}>\n {\n await self.PileupDisplay.renderSvg({\n ...opts,\n overrideHeight: pileupHeight,\n })\n }\n </g>\n </>\n )\n },\n }))\n}\n\nexport default stateModelFactory\nexport type AlignmentsDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type AlignmentsDisplayModel = Instance<AlignmentsDisplayStateModel>\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport { makeStyles } from '@material-ui/core'\nimport { AlignmentsDisplayModel } from '../models/model'\n\nconst useStyles = makeStyles(() => ({\n resizeHandle: {\n height: 2,\n position: 'absolute',\n zIndex: 2,\n },\n}))\n\nfunction AlignmentsDisplay({ model }: { model: AlignmentsDisplayModel }) {\n const { PileupDisplay, SNPCoverageDisplay, showPileup, showCoverage } = model\n const classes = useStyles()\n const top = SNPCoverageDisplay.height\n return (\n <div\n data-testid={`display-${getConf(model, 'displayId')}`}\n style={{ position: 'relative' }}\n >\n {showCoverage ? (\n <>\n <div data-testid=\"Blockset-snpcoverage\">\n <SNPCoverageDisplay.RenderingComponent model={SNPCoverageDisplay} />\n </div>\n <ResizeHandle\n onDrag={delta => {\n SNPCoverageDisplay.setHeight(SNPCoverageDisplay.height + delta)\n return delta\n }}\n className={classes.resizeHandle}\n style={{\n top,\n }}\n />\n </>\n ) : null}\n\n {showPileup ? (\n <div\n data-testid=\"Blockset-pileup\"\n style={{\n position: 'absolute',\n top: showCoverage ? SNPCoverageDisplay.height : 0,\n }}\n >\n <PileupDisplay.RenderingComponent model={PileupDisplay} />\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default observer(AlignmentsDisplay)\n","import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n// locals\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport ReactComponent from './components/AlignmentsDisplay'\n\nexport default function (pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearAlignmentsDisplay',\n configSchema,\n stateModel: modelFactory(pluginManager, configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent,\n })\n })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nexport default function SNPCoverageConfigFactory(pluginManager: PluginManager) {\n const SNPCoverageRendererConfigSchema = pluginManager.getRendererType(\n 'SNPCoverageRenderer',\n ).configSchema\n\n return ConfigurationSchema(\n 'LinearSNPCoverageDisplay',\n {\n autoscale: {\n type: 'stringEnum',\n defaultValue: 'local',\n model: types.enumeration('Autoscale type', ['local']),\n description:\n 'performs local autoscaling (no other options for SNP Coverage available)',\n },\n minScore: {\n type: 'number',\n defaultValue: Number.MIN_VALUE,\n description: 'minimum value for the y-scale',\n },\n maxScore: {\n type: 'number',\n description: 'maximum value for the y-scale',\n defaultValue: Number.MAX_VALUE,\n },\n scaleType: {\n type: 'stringEnum',\n model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale\n description: 'The type of scale to use',\n defaultValue: 'linear',\n },\n inverted: {\n type: 'boolean',\n description: 'draw upside down',\n defaultValue: false,\n },\n\n multiTicks: {\n type: 'boolean',\n description: 'Display multiple values for the ticks',\n defaultValue: false,\n },\n\n renderers: ConfigurationSchema('RenderersConfiguration', {\n SNPCoverageRenderer: SNPCoverageRendererConfigSchema,\n }),\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { Tooltip } from '@jbrowse/plugin-wiggle'\n\ntype Count = {\n [key: string]: {\n total: number\n strands: { [key: string]: number }\n }\n}\n\ntype SNPInfo = {\n ref: Count\n cov: Count\n lowqual: Count\n noncov: Count\n delskips: Count\n total: number\n}\n\nconst en = (n: number) => n.toLocaleString('en-US')\n\nconst TooltipContents = React.forwardRef(\n ({ feature }: { feature: Feature }, ref: any) => {\n const start = feature.get('start')\n const end = feature.get('end')\n const name = feature.get('refName')\n const info = feature.get('snpinfo') as SNPInfo\n const loc = [name, start === end ? en(start) : `${en(start)}..${en(end)}`]\n .filter(f => !!f)\n .join(':')\n\n const total = info?.total\n\n return (\n <div ref={ref}>\n <table>\n <caption>{loc}</caption>\n <thead>\n <tr>\n <th>Base</th>\n <th>Count</th>\n <th>% of Total</th>\n <th>Strands</th>\n <th>Source</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Total</td>\n <td>{total}</td>\n <td />\n </tr>\n\n {Object.entries(info).map(([key, entry]) => {\n return Object.entries(entry).map(([base, score]) => {\n const { strands } = score\n return (\n <tr key={base}>\n <td>{base.toUpperCase()}</td>\n <td>{score.total}</td>\n <td>\n {base === 'total' || base === 'skip'\n ? '---'\n : `${Math.floor(\n (score.total / (total || score.total || 1)) * 100,\n )}%`}\n </td>\n <td>\n {strands['-1'] ? `${strands['-1']}(-)` : ''}\n {strands['1'] ? `${strands['1']}(+)` : ''}\n </td>\n <td>{key}</td>\n </tr>\n )\n })\n })}\n </tbody>\n </table>\n </div>\n )\n },\n)\n\ntype Coord = [number, number]\n\nconst SNPCoverageTooltip = observer(\n (props: {\n model: any\n height: number\n offsetMouseCoord: Coord\n clientMouseCoord: Coord\n clientRect?: DOMRect\n }) => {\n const { model } = props\n const { featureUnderMouse: feat } = model\n return feat && feat.get('type') === 'skip' ? null : (\n <Tooltip TooltipContents={TooltipContents} {...props} />\n )\n },\n)\n\nexport default SNPCoverageTooltip\n","import { BlockSet } from '@jbrowse/core/util/blockTypes'\n\nimport { getSession } from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\n\nexport async function getUniqueTagValues(\n self: IAnyStateTreeNode & { adapterConfig: AnyConfigurationModel },\n colorScheme: { type: string; tag?: string },\n blocks: BlockSet,\n opts?: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n) {\n const { rpcManager } = getSession(self)\n const { adapterConfig } = self\n const sessionId = getRpcSessionId(self)\n const values = await rpcManager.call(\n getRpcSessionId(self),\n 'PileupGetGlobalValueForTag',\n {\n adapterConfig,\n tag: colorScheme.tag,\n sessionId,\n regions: blocks.contentBlocks,\n ...opts,\n },\n )\n return values as string[]\n}\n\nexport async function getUniqueModificationValues(\n self: IAnyStateTreeNode & {\n parentTrack: IAnyStateTreeNode & { configuration: AnyConfigurationModel }\n },\n adapterConfig: AnyConfigurationModel,\n colorScheme: { type: string; tag?: string },\n blocks: BlockSet,\n opts?: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n) {\n const { rpcManager } = getSession(self)\n const sessionId = getRpcSessionId(self)\n const values = await rpcManager.call(\n sessionId,\n 'PileupGetVisibleModifications',\n {\n adapterConfig,\n tag: colorScheme.tag,\n sessionId,\n regions: blocks.contentBlocks,\n ...opts,\n },\n )\n return values as string[]\n}\n","import { addDisposer, types, cast, getEnv, getSnapshot } from 'mobx-state-tree'\nimport { observable, autorun } from 'mobx'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { linearWiggleDisplayModelFactory } from '@jbrowse/plugin-wiggle'\nimport {\n AnyConfigurationSchemaType,\n AnyConfigurationModel,\n} from '@jbrowse/core/configuration/configurationSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { getContainingView } from '@jbrowse/core/util'\nimport Tooltip from '../components/Tooltip'\nimport { getUniqueModificationValues } from '../../shared'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// using a map because it preserves order\nconst rendererTypes = new Map([['snpcoverage', 'SNPCoverageRenderer']])\n\ntype LGV = LinearGenomeViewModel\n\nconst stateModelFactory = (\n pluginManager: PluginManager,\n configSchema: AnyConfigurationSchemaType,\n) =>\n types\n .compose(\n 'LinearSNPCoverageDisplay',\n linearWiggleDisplayModelFactory(pluginManager, configSchema),\n types.model({\n type: types.literal('LinearSNPCoverageDisplay'),\n drawInterbaseCounts: types.maybe(types.boolean),\n drawIndicators: types.maybe(types.boolean),\n drawArcs: types.maybe(types.boolean),\n filterBy: types.optional(\n types.model({\n flagInclude: types.optional(types.number, 0),\n flagExclude: types.optional(types.number, 1540),\n readName: types.maybe(types.string),\n tagFilter: types.maybe(\n types.model({ tag: types.string, value: types.string }),\n ),\n }),\n {},\n ),\n colorBy: types.maybe(\n types.model({\n type: types.string,\n tag: types.maybe(types.string),\n }),\n ),\n }),\n )\n .volatile(() => ({\n modificationTagMap: observable.map({}),\n }))\n .actions(self => ({\n setConfig(configuration: AnyConfigurationModel) {\n self.configuration = configuration\n },\n setFilterBy(filter: {\n flagInclude: number\n flagExclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }) {\n self.filterBy = cast(filter)\n },\n setColorBy(colorBy?: { type: string; tag?: string }) {\n self.colorBy = cast(colorBy)\n },\n\n updateModificationColorMap(uniqueModifications: string[]) {\n const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']\n let i = 0\n\n uniqueModifications.forEach(value => {\n if (!self.modificationTagMap.has(value)) {\n const newColor = colorPalette[i++]\n self.modificationTagMap.set(value, newColor)\n }\n })\n },\n }))\n .views(self => {\n const { renderProps: superRenderProps } = self\n return {\n get rendererConfig() {\n const configBlob =\n getConf(self, ['renderers', self.rendererTypeName]) || {}\n\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n drawInterbaseCounts:\n self.drawInterbaseCounts === undefined\n ? configBlob.drawInterbaseCounts\n : self.drawInterbaseCounts,\n drawIndicators:\n self.drawIndicators === undefined\n ? configBlob.drawIndicators\n : self.drawIndicators,\n drawArcs:\n self.drawArcs === undefined\n ? configBlob.drawArcs\n : self.drawArcs,\n },\n getEnv(self),\n )\n },\n get drawArcsSetting() {\n return self.drawArcs !== undefined\n ? self.drawArcs\n : readConfObject(this.rendererConfig, 'drawArcs')\n },\n get drawInterbaseCountsSetting() {\n return self.drawInterbaseCounts !== undefined\n ? self.drawInterbaseCounts\n : readConfObject(this.rendererConfig, 'drawInterbaseCounts')\n },\n get drawIndicatorsSetting() {\n return self.drawIndicators !== undefined\n ? self.drawIndicators\n : readConfObject(this.rendererConfig, 'drawIndicators')\n },\n\n get modificationsReady() {\n return self.colorBy?.type === 'modifications'\n ? Object.keys(JSON.parse(JSON.stringify(self.modificationTagMap)))\n .length > 0\n : true\n },\n\n renderProps() {\n const superProps = superRenderProps()\n return {\n ...superProps,\n notReady: superProps.notReady || !this.modificationsReady,\n filters: self.filters,\n modificationTagMap: JSON.parse(\n JSON.stringify(self.modificationTagMap),\n ),\n\n // must use getSnapshot because otherwise changes to e.g. just the\n // colorBy.type are not read\n colorBy: self.colorBy ? getSnapshot(self.colorBy) : undefined,\n }\n },\n }\n })\n .actions(self => ({\n toggleDrawIndicators() {\n self.drawIndicators = !self.drawIndicatorsSetting\n },\n toggleDrawInterbaseCounts() {\n self.drawInterbaseCounts = !self.drawInterbaseCountsSetting\n },\n toggleDrawArcs() {\n self.drawArcs = !self.drawArcsSetting\n },\n afterAttach() {\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const { colorBy } = self\n const { staticBlocks } = getContainingView(self) as LGV\n if (colorBy?.type === 'modifications') {\n const vals = await getUniqueModificationValues(\n self,\n getConf(self.parentTrack, 'adapter'),\n colorBy,\n staticBlocks,\n )\n self.updateModificationColorMap(vals)\n }\n } catch (error) {\n console.error(error)\n self.setError(error)\n }\n },\n { delay: 1000 },\n ),\n )\n },\n }))\n\n .views(self => {\n const { trackMenuItems: superTrackMenuItems } = self\n return {\n get TooltipComponent() {\n return Tooltip\n },\n\n get adapterConfig() {\n const subadapter = getConf(self.parentTrack, 'adapter')\n return {\n type: 'SNPCoverageAdapter',\n subadapter,\n }\n },\n\n get rendererTypeName() {\n return rendererTypes.get('snpcoverage')\n },\n\n get needsScalebar() {\n return true\n },\n\n contextMenuItems() {\n return []\n },\n\n trackMenuItems() {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Draw insertion/clipping indicators',\n type: 'checkbox',\n checked: self.drawIndicatorsSetting,\n onClick: () => {\n self.toggleDrawIndicators()\n },\n },\n {\n label: 'Draw insertion/clipping counts',\n type: 'checkbox',\n checked: self.drawInterbaseCountsSetting,\n onClick: () => {\n self.toggleDrawInterbaseCounts()\n },\n },\n {\n label: 'Draw arcs',\n type: 'checkbox',\n checked: self.drawArcsSetting,\n onClick: () => {\n self.toggleDrawArcs()\n },\n },\n ]\n },\n // The SNPCoverage filters are called twice because the BAM/CRAM\n // features pass filters and then the SNPCoverage score features pass\n // through here, and are already have 'snpinfo' are passed through\n get filters() {\n let filters: string[] = []\n if (self.filterBy) {\n const { flagInclude, flagExclude, tagFilter, readName } =\n self.filterBy\n filters = [\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `((get(feature,'flags')&${flagInclude})==${flagInclude}) && ` +\n `!((get(feature,'flags')&${flagExclude}))`,\n ]\n\n if (tagFilter) {\n const { tag, value } = tagFilter\n filters.push(\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `\"${value}\" =='*' ? getTag(feature,\"${tag}\") != undefined : ` +\n `getTag(feature,\"${tag}\") == \"${value}\"`,\n )\n }\n if (readName) {\n filters.push(\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `get(feature,'name') == \"${readName}\"`,\n )\n }\n }\n return new SerializableFilterChain({ filters })\n },\n }\n })\n\nexport type SNPCoverageDisplayModel = ReturnType<typeof stateModelFactory>\n\nexport default stateModelFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport { LinearWiggleDisplayReactComponent } from '@jbrowse/plugin-wiggle'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearSNPCoverageDisplay',\n configSchema,\n stateModel: modelFactory(pluginManager, configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: LinearWiggleDisplayReactComponent,\n })\n })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { types, Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nfunction PileupConfigFactory(pluginManager: PluginManager) {\n const PileupRendererConfigSchema =\n pluginManager.getRendererType('PileupRenderer').configSchema\n const SvgFeatureRendererConfigSchema =\n pluginManager.getRendererType('SvgFeatureRenderer').configSchema\n\n // modify config schema to take in a sub coverage display\n return ConfigurationSchema(\n 'LinearPileupDisplay',\n {\n defaultRendering: {\n type: 'stringEnum',\n model: types.enumeration('Rendering', ['pileup', 'svg']),\n defaultValue: 'pileup',\n },\n renderers: ConfigurationSchema('RenderersConfiguration', {\n PileupRenderer: PileupRendererConfigSchema,\n SvgFeatureRenderer: SvgFeatureRendererConfigSchema,\n }),\n renderer: '',\n maxFeatureScreenDensity: {\n type: 'number',\n description: 'maximum features per pixel that is displayed in the view',\n defaultValue: 5,\n },\n colorScheme: {\n type: 'stringEnum',\n model: types.enumeration('colorScheme', [\n 'strand',\n 'normal',\n 'insertSize',\n 'insertSizeAndOrientation',\n 'mappingQuality',\n 'tag',\n ]),\n description: 'color scheme to use',\n defaultValue: 'normal',\n },\n },\n {\n baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n explicitlyTyped: true,\n },\n )\n}\n\nexport type LinearPileupDisplayConfigModel = ReturnType<\n typeof PileupConfigFactory\n>\nexport type LinearPileupDisplayConfig = Instance<LinearPileupDisplayConfigModel>\nexport default PileupConfigFactory\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport Typography from '@material-ui/core/Typography'\n\nexport interface LinearPileupDisplayBlurbProps {\n model: {\n sortedBy?: {\n pos: number\n refName: number\n type: string\n }\n }\n}\n\nfunction LinearPileupDisplayBlurb(props: LinearPileupDisplayBlurbProps) {\n const { model } = props\n const { sortedBy } = model\n return sortedBy ? (\n <div\n data-testid={`blurb-${model.sortedBy}`}\n style={{ backgroundColor: 'white' }}\n >\n <Typography color=\"secondary\" variant=\"caption\">\n {model.sortedBy\n ? `Sorted by ${sortedBy.type.toLowerCase()} at ${sortedBy.refName}:${\n sortedBy.pos\n }`\n : null}\n </Typography>\n </div>\n ) : null\n}\nexport default observer(LinearPileupDisplayBlurb)\n","import { lazy } from 'react'\nimport {\n ConfigurationReference,\n readConfObject,\n getConf,\n} from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n getSession,\n isSessionModelWithWidgets,\n getContainingView,\n} from '@jbrowse/core/util'\n\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport {\n LinearGenomeViewModel,\n BaseLinearDisplay,\n} from '@jbrowse/plugin-linear-genome-view'\nimport { cast, types, addDisposer, getEnv, Instance } from 'mobx-state-tree'\nimport copy from 'copy-to-clipboard'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\nimport SortIcon from '@material-ui/icons/Sort'\nimport PaletteIcon from '@material-ui/icons/Palette'\nimport FilterListIcon from '@material-ui/icons/ClearAll'\n\nimport { autorun, observable } from 'mobx'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { LinearPileupDisplayConfigModel } from './configSchema'\nimport LinearPileupDisplayBlurb from './components/LinearPileupDisplayBlurb'\n\nimport { getUniqueTagValues, getUniqueModificationValues } from '../shared'\n\nconst ColorByTagDlg = lazy(() => import('./components/ColorByTag'))\nconst FilterByTagDlg = lazy(() => import('./components/FilterByTag'))\nconst SortByTagDlg = lazy(() => import('./components/SortByTag'))\nconst SetFeatureHeightDlg = lazy(() => import('./components/SetFeatureHeight'))\nconst SetMaxHeightDlg = lazy(() => import('./components/SetMaxHeight'))\nconst ModificationsDlg = lazy(() => import('./components/ColorByModifications'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([\n ['pileup', 'PileupRenderer'],\n ['svg', 'SvgFeatureRenderer'],\n])\n\ntype LGV = LinearGenomeViewModel\n\nconst stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>\n types\n .compose(\n 'LinearPileupDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearPileupDisplay'),\n configuration: ConfigurationReference(configSchema),\n showSoftClipping: false,\n featureHeight: types.maybe(types.number),\n noSpacing: types.maybe(types.boolean),\n fadeLikelihood: types.maybe(types.boolean),\n trackMaxHeight: types.maybe(types.number),\n mismatchAlpha: types.maybe(types.boolean),\n sortedBy: types.maybe(\n types.model({\n type: types.string,\n pos: types.number,\n tag: types.maybe(types.string),\n refName: types.string,\n assemblyName: types.string,\n }),\n ),\n colorBy: types.maybe(\n types.model({\n type: types.string,\n tag: types.maybe(types.string),\n extra: types.frozen(),\n }),\n ),\n filterBy: types.optional(\n types.model({\n flagInclude: types.optional(types.number, 0),\n flagExclude: types.optional(types.number, 1540),\n readName: types.maybe(types.string),\n tagFilter: types.maybe(\n types.model({ tag: types.string, value: types.string }),\n ),\n }),\n {},\n ),\n }),\n )\n .volatile(() => ({\n colorTagMap: observable.map<string, string>({}),\n modificationTagMap: observable.map<string, string>({}),\n ready: false,\n }))\n .actions(self => ({\n setReady(flag: boolean) {\n self.ready = flag\n },\n setMaxHeight(n: number) {\n self.trackMaxHeight = n\n },\n setFeatureHeight(n: number) {\n self.featureHeight = n\n },\n setNoSpacing(flag: boolean) {\n self.noSpacing = flag\n },\n\n setColorScheme(colorScheme: { type: string; tag?: string }) {\n self.colorTagMap = observable.map({}) // clear existing mapping\n self.colorBy = cast(colorScheme)\n self.ready = false\n },\n\n updateModificationColorMap(uniqueModifications: string[]) {\n const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']\n uniqueModifications.forEach(value => {\n if (!self.modificationTagMap.has(value)) {\n const totalKeys = [...self.modificationTagMap.keys()].length\n const newColor = colorPalette[totalKeys]\n self.modificationTagMap.set(value, newColor)\n }\n })\n },\n\n updateColorTagMap(uniqueTag: string[]) {\n // pale color scheme https://cran.r-project.org/web/packages/khroma/vignettes/tol.html e.g. \"tol_light\"\n const colorPalette = [\n '#BBCCEE',\n 'pink',\n '#CCDDAA',\n '#EEEEBB',\n '#FFCCCC',\n 'lightblue',\n 'lightgreen',\n 'tan',\n '#CCEEFF',\n 'lightsalmon',\n ]\n\n uniqueTag.forEach(value => {\n if (!self.colorTagMap.has(value)) {\n const totalKeys = [...self.colorTagMap.keys()].length\n const newColor = colorPalette[totalKeys]\n self.colorTagMap.set(value, newColor)\n }\n })\n },\n }))\n .actions(self => ({\n afterAttach() {\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const { rpcManager } = getSession(self)\n const { sortedBy, colorBy } = self\n const view = getContainingView(self) as LGV\n\n // continually generate the vc pairing, set and rerender if any\n // new values seen\n if (colorBy?.tag) {\n const uniqueTagSet = await getUniqueTagValues(\n self,\n colorBy,\n view.staticBlocks,\n )\n self.updateColorTagMap(uniqueTagSet)\n }\n\n if (colorBy?.type === 'modifications') {\n const uniqueModificationsSet =\n await getUniqueModificationValues(\n self,\n getConf(self.parentTrack, ['adapter']),\n colorBy,\n view.staticBlocks,\n )\n self.updateModificationColorMap(uniqueModificationsSet)\n }\n\n if (sortedBy) {\n const { pos, refName, assemblyName } = sortedBy\n\n const region = {\n start: pos,\n end: pos + 1,\n refName,\n assemblyName,\n }\n\n // render just the sorted region first\n await self.rendererType.renderInClient(rpcManager, {\n assemblyName,\n regions: [region],\n adapterConfig: self.adapterConfig,\n rendererType: self.rendererType.name,\n sessionId: getRpcSessionId(self),\n timeout: 1000000,\n ...self.renderProps(),\n })\n self.setReady(true)\n self.setCurrBpPerPx(view.bpPerPx)\n } else {\n self.setReady(true)\n }\n } catch (e) {\n console.error(e)\n self.setError(e)\n }\n },\n { delay: 1000 },\n ),\n )\n },\n selectFeature(feature: Feature) {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const featureWidget = session.addWidget(\n 'AlignmentsFeatureWidget',\n 'alignmentFeature',\n { featureData: feature.toJSON(), view: getContainingView(self) },\n )\n session.showWidget(featureWidget)\n }\n session.setSelection(feature)\n },\n\n clearSelected() {\n self.sortedBy = undefined\n },\n\n // uses copy-to-clipboard and generates notification\n copyFeatureToClipboard(feature: Feature) {\n const { uniqueId, ...rest } = feature.toJSON()\n const session = getSession(self)\n copy(JSON.stringify(rest, null, 4))\n session.notify('Copied to clipboard', 'success')\n },\n\n toggleSoftClipping() {\n self.showSoftClipping = !self.showSoftClipping\n },\n toggleMismatchAlpha() {\n self.mismatchAlpha = !self.mismatchAlpha\n },\n\n setConfig(configuration: AnyConfigurationModel) {\n self.configuration = configuration\n },\n\n setSortedBy(type: string, tag?: string) {\n const { centerLineInfo } = getContainingView(self) as LGV\n if (!centerLineInfo) {\n return\n }\n const { refName, assemblyName, offset } = centerLineInfo\n const centerBp = Math.round(offset) + 1\n const centerRefName = refName\n\n if (centerBp < 0) {\n return\n }\n\n self.sortedBy = {\n type,\n pos: centerBp,\n refName: centerRefName,\n assemblyName,\n tag,\n }\n self.ready = false\n },\n setFilterBy(filter: {\n flagInclude: number\n flagExclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }) {\n self.filterBy = cast(filter)\n },\n }))\n .actions(self => {\n // resets the sort object and refresh whole display on reload\n const superReload = self.reload\n\n return {\n reload() {\n self.clearSelected()\n superReload()\n },\n }\n })\n\n .views(self => ({\n get maxHeight() {\n const conf = getConf(self, ['renderers', self.rendererTypeName]) || {}\n return self.trackMaxHeight !== undefined\n ? self.trackMaxHeight\n : conf.maxHeight\n },\n get rendererConfig() {\n const configBlob =\n getConf(self, ['renderers', self.rendererTypeName]) || {}\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n height: self.featureHeight,\n noSpacing: self.noSpacing,\n maxHeight: this.maxHeight,\n mismatchAlpha: self.mismatchAlpha,\n },\n getEnv(self),\n )\n },\n get featureHeightSetting() {\n return (\n self.featureHeight || readConfObject(this.rendererConfig, 'height')\n )\n },\n get mismatchAlphaSetting() {\n return self.mismatchAlpha !== undefined\n ? self.mismatchAlpha\n : readConfObject(this.rendererConfig, 'mismatchAlpha')\n },\n }))\n .views(self => {\n const {\n trackMenuItems: superTrackMenuItems,\n renderProps: superRenderProps,\n } = self\n\n return {\n get rendererTypeName() {\n const viewName = getConf(self, 'defaultRendering')\n const rendererType = rendererTypes.get(viewName)\n if (!rendererType) {\n throw new Error(`unknown alignments view name ${viewName}`)\n }\n return rendererType\n },\n\n contextMenuItems() {\n const feat = self.contextMenuFeature\n const contextMenuItems = feat\n ? [\n {\n label: 'Open feature details',\n icon: MenuOpenIcon,\n onClick: () => {\n self.clearFeatureSelection()\n if (feat) {\n self.selectFeature(feat)\n }\n },\n },\n {\n label: 'Copy info to clipboard',\n icon: ContentCopyIcon,\n onClick: () => {\n if (feat) {\n self.copyFeatureToClipboard(feat)\n }\n },\n },\n ]\n : []\n return contextMenuItems\n },\n\n get DisplayBlurb() {\n return LinearPileupDisplayBlurb\n },\n\n get filters() {\n let filters: string[] = []\n const { flagInclude, flagExclude, tagFilter, readName } =\n self.filterBy\n\n filters = [\n `jexl:((get(feature,'flags')&${flagInclude})==${flagInclude}) && !(get(feature,'flags')&${flagExclude})`,\n ]\n if (tagFilter) {\n const { tag, value } = tagFilter\n filters.push(\n `jexl:\"${value}\" =='*' ? getTag(feature,\"${tag}\") != undefined : getTag(feature,\"${tag}\") == \"${value}\"`,\n )\n }\n if (readName) {\n filters.push(`jexl:get(feature,'name') == \"${readName}\"`)\n }\n return new SerializableFilterChain({ filters })\n },\n\n renderProps() {\n const view = getContainingView(self) as LGV\n const {\n colorTagMap,\n modificationTagMap,\n sortedBy,\n colorBy,\n rpcDriverName,\n } = self\n\n const superProps = superRenderProps()\n\n return {\n ...superProps,\n notReady:\n superProps.notReady ||\n !self.ready ||\n (sortedBy && self.currBpPerPx !== view.bpPerPx),\n rpcDriverName,\n displayModel: self,\n sortedBy,\n colorBy,\n colorTagMap: JSON.parse(JSON.stringify(colorTagMap)),\n modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),\n filters: this.filters,\n showSoftClip: self.showSoftClipping,\n config: self.rendererConfig,\n }\n },\n\n trackMenuItems() {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Show soft clipping',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showSoftClipping,\n onClick: () => {\n self.toggleSoftClipping()\n // if toggling from off to on, will break sort for this track\n // so clear it\n if (self.showSoftClipping) {\n self.clearSelected()\n }\n },\n },\n {\n label: 'Sort by',\n icon: SortIcon,\n disabled: self.showSoftClipping,\n subMenu: [\n ...['Start location', 'Read strand', 'Base pair'].map(\n option => {\n return {\n label: option,\n onClick: () => self.setSortedBy(option),\n }\n },\n ),\n {\n label: 'Sort by tag...',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SortByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Clear sort',\n onClick: () => self.clearSelected(),\n },\n ],\n },\n {\n label: 'Color scheme',\n icon: PaletteIcon,\n subMenu: [\n {\n label: 'Normal',\n onClick: () => {\n self.setColorScheme({ type: 'normal' })\n },\n },\n {\n label: 'Mapping quality',\n onClick: () => {\n self.setColorScheme({ type: 'mappingQuality' })\n },\n },\n {\n label: 'Strand',\n onClick: () => {\n self.setColorScheme({ type: 'strand' })\n },\n },\n {\n label: 'Pair orientation',\n onClick: () => {\n self.setColorScheme({ type: 'pairOrientation' })\n },\n },\n {\n label: 'Per-base quality',\n onClick: () => {\n self.setColorScheme({ type: 'perBaseQuality' })\n },\n },\n {\n label: 'Modifications or methylation',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n ModificationsDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Insert size',\n onClick: () => {\n self.setColorScheme({ type: 'insertSize' })\n },\n },\n {\n label: 'Stranded paired-end',\n onClick: () => {\n self.setColorScheme({ type: 'reverseTemplate' })\n },\n },\n {\n label: 'Color by tag...',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n ColorByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n ],\n },\n {\n label: 'Filter by',\n icon: FilterListIcon,\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n FilterByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Set feature height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetFeatureHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Set max height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetMaxHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Fade mismatches by quality',\n type: 'checkbox',\n checked: self.mismatchAlphaSetting,\n onClick: () => {\n self.toggleMismatchAlpha()\n },\n },\n ]\n },\n }\n })\n\nexport type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>\n\nexport default stateModelFactory\n","import configSchemaFactory from './configSchema'\nimport modelFactory from './model'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearPileupDisplay',\n configSchema,\n stateModel: modelFactory(configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport {\n createBaseTrackConfig,\n createBaseTrackModel,\n} from '@jbrowse/core/pluggableElementTypes/models'\nfunction configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'AlignmentsTrack',\n {},\n { baseConfiguration: createBaseTrackConfig(pluginManager) },\n )\n}\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addTrackType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n const track = new TrackType({\n name: 'AlignmentsTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'AlignmentsTrack',\n configSchema,\n ),\n })\n const linearAlignmentsDisplay = pluginManager.getDisplayType(\n 'LinearAlignmentsDisplay',\n )\n // Add LinearAlignmentsDisplay here so that it has priority over the other\n // linear displays (defaults to order the displays are added, but we have\n // to add the Pileup and SNPCoverage displays first).\n track.addDisplayType(linearAlignmentsDisplay)\n return track\n })\n}\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\nimport WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'\n\nconst configSchema = ConfigurationSchema('AlignmentsFeatureWidget', {})\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n return types\n .model('AlignmentsFeatureWidget', {\n id: ElementId,\n type: types.literal('AlignmentsFeatureWidget'),\n featureData: types.frozen(),\n view: types.safeReference(\n pluginManager.pluggableMstType('view', 'stateModel'),\n ),\n })\n .actions(self => ({\n setFeatureData(data: unknown) {\n self.featureData = data\n },\n clearFeatureData() {\n self.featureData = undefined\n },\n }))\n}\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addWidgetType(\n () =>\n new WidgetType({\n name: 'AlignmentsFeatureWidget',\n heading: 'Feature details',\n configSchema,\n stateModel: stateModelFactory(pluginManager),\n ReactComponent: lazy(() => import('./AlignmentsFeatureDetail')),\n }),\n )\n}\n\nexport { configSchema }\n","import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'\nimport { renameRegionsIfNeeded } from '@jbrowse/core/util'\nimport { Region } from '@jbrowse/core/util/types'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { toArray } from 'rxjs/operators'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { getTagAlt } from '../util'\nimport { getModificationTypes } from '../BamAdapter/MismatchParser'\n\nexport class PileupGetGlobalValueForTag extends RpcMethodType {\n name = 'PileupGetGlobalValueForTag'\n\n async serializeArguments(\n args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },\n rpcDriverClassName: string,\n ) {\n const { rootModel } = this.pluginManager\n const assemblyManager = rootModel?.session?.assemblyManager\n if (!assemblyManager) {\n throw new Error('no assembly manager available')\n }\n\n const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n return super.serializeArguments(renamedArgs, rpcDriverClassName)\n }\n\n async execute(\n args: {\n adapterConfig: {}\n signal?: RemoteAbortSignal\n headers?: Record<string, string>\n regions: Region[]\n sessionId: string\n tag: string\n },\n rpcDriverClassName: string,\n ) {\n const deserializedArgs = await this.deserializeArguments(\n args,\n rpcDriverClassName,\n )\n const { adapterConfig, sessionId, regions, tag } = deserializedArgs\n const dataAdapter = (\n await getAdapter(this.pluginManager, sessionId, adapterConfig)\n ).dataAdapter as BaseFeatureDataAdapter\n\n const features = dataAdapter.getFeaturesInMultipleRegions(regions)\n const featuresArray = await features.pipe(toArray()).toPromise()\n const uniqueValues = new Set<string>()\n featuresArray.forEach(feature => {\n const tags = feature.get('tags')\n const val = tags ? tags[tag] : feature.get(tag)\n if (val !== undefined) {\n uniqueValues.add(`${val}`)\n }\n })\n return [...uniqueValues]\n }\n}\n\nexport class PileupGetVisibleModifications extends RpcMethodType {\n name = 'PileupGetVisibleModifications'\n\n async serializeArguments(\n args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },\n rpcDriverClassName: string,\n ) {\n const { rootModel } = this.pluginManager\n const assemblyManager = rootModel?.session?.assemblyManager\n if (!assemblyManager) {\n throw new Error('no assembly manager available')\n }\n\n const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n return super.serializeArguments(renamedArgs, rpcDriverClassName)\n }\n\n async execute(\n args: {\n adapterConfig: {}\n signal?: RemoteAbortSignal\n headers?: Record<string, string>\n regions: Region[]\n sessionId: string\n tag: string\n },\n rpcDriverClassName: string,\n ) {\n const deserializedArgs = await this.deserializeArguments(\n args,\n rpcDriverClassName,\n )\n const { adapterConfig, sessionId, regions } = deserializedArgs\n const dataAdapter = (\n await getAdapter(this.pluginManager, sessionId, adapterConfig)\n ).dataAdapter as BaseFeatureDataAdapter\n\n const features = dataAdapter.getFeaturesInMultipleRegions(regions)\n const featuresArray = await features.pipe(toArray()).toPromise()\n const uniqueValues = new Set<string>()\n featuresArray.forEach(feature => {\n const val = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n if (val !== undefined) {\n getModificationTypes(val).forEach(t => uniqueValues.add(t))\n }\n })\n return [...uniqueValues]\n }\n}\n","import { FileLocation } from '@jbrowse/core/util/types'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport * as MismatchParser from './BamAdapter/MismatchParser'\nimport { LinearPileupDisplayModel } from './LinearPileupDisplay/model'\n\nimport BamAdapterF from './CramAdapter'\nimport CramAdapterF from './BamAdapter'\nimport HtsgetBamAdapterF from './HtsgetBamAdapter'\nimport SNPCoverageAdapterF from './SNPCoverageAdapter'\nimport SNPCoverageRendererF from './SNPCoverageRenderer'\nimport PileupRendererF from './PileupRenderer'\nimport LinearAlignmentsDisplayF from './LinearAlignmentsDisplay'\nimport LinearSNPCoverageDisplayF from './LinearSNPCoverageDisplay'\nimport LinearPileupDisplayF from './LinearPileupDisplay'\nimport AlignmentsTrackF from './AlignmentsTrack'\nimport AlignmentsFeatureWidgetF from './AlignmentsFeatureDetail'\n\nimport {\n PileupGetGlobalValueForTag,\n PileupGetVisibleModifications,\n} from './PileupRPC/rpcMethods'\nimport {\n makeIndex,\n makeIndexType,\n getFileName,\n AdapterGuesser,\n TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport { MismatchParser }\nexport type { LinearPileupDisplayModel }\n\nexport default class AlignmentsPlugin extends Plugin {\n name = 'AlignmentsPlugin'\n\n install(pluginManager: PluginManager) {\n ;[\n CramAdapterF,\n BamAdapterF,\n LinearPileupDisplayF,\n LinearSNPCoverageDisplayF,\n AlignmentsTrackF,\n SNPCoverageAdapterF,\n HtsgetBamAdapterF,\n PileupRendererF,\n SNPCoverageRendererF,\n LinearAlignmentsDisplayF,\n AlignmentsFeatureWidgetF,\n ].map(f => f(pluginManager))\n\n pluginManager.addToExtensionPoint(\n 'Core-guessAdapterForLocation',\n (adapterGuesser: AdapterGuesser) => {\n return (\n file: FileLocation,\n index?: FileLocation,\n adapterHint?: string,\n ) => {\n const regexGuess = /\\.cram$/i\n const adapterName = 'CramAdapter'\n const fileName = getFileName(file)\n const obj = {\n type: adapterName,\n cramLocation: file,\n craiLocation: index || makeIndex(file, '.crai'),\n }\n if (regexGuess.test(fileName) && !adapterHint) {\n return obj\n } else if (adapterHint === adapterName) {\n return obj\n }\n return adapterGuesser(file, index, adapterHint)\n }\n },\n )\n\n pluginManager.addToExtensionPoint(\n 'Core-guessAdapterForLocation',\n (adapterGuesser: AdapterGuesser) => {\n return (\n file: FileLocation,\n index?: FileLocation,\n adapterHint?: string,\n ) => {\n const regexGuess = /\\.bam$/i\n const adapterName = 'BamAdapter'\n const fileName = getFileName(file)\n const indexName = index && getFileName(index)\n\n const obj = {\n type: adapterName,\n bamLocation: file,\n index: {\n location: index || makeIndex(file, '.bai'),\n indexType: makeIndexType(indexName, 'CSI', 'BAI'),\n },\n }\n if (regexGuess.test(fileName) && !adapterHint) {\n return obj\n } else if (adapterHint === adapterName) {\n return obj\n }\n return adapterGuesser(file, index, adapterHint)\n }\n },\n )\n pluginManager.addToExtensionPoint(\n 'Core-guessTrackTypeForLocation',\n (trackTypeGuesser: TrackTypeGuesser) => {\n return (adapterName: string) => {\n if (adapterName === 'BamAdapter' || adapterName === 'CramAdapter') {\n return 'AlignmentsTrack'\n }\n return trackTypeGuesser(adapterName)\n }\n },\n )\n\n pluginManager.addRpcMethod(\n () => new PileupGetGlobalValueForTag(pluginManager),\n )\n pluginManager.addRpcMethod(\n () => new PileupGetVisibleModifications(pluginManager),\n )\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {\n Feature,\n SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\n\nimport CramAdapter from './CramAdapter'\n\nexport interface Mismatch {\n qual?: number\n start: number\n length: number\n type: string\n base: string\n altbase?: string\n seq?: string\n cliplen?: number\n}\n\nexport default class CramSlightlyLazyFeature implements Feature {\n private _store: CramAdapter\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private record: any, store: CramAdapter) {\n this._store = store\n }\n\n _get_name() {\n return this.record.readName\n }\n\n _get_start() {\n return this.record.alignmentStart - 1\n }\n\n _get_end() {\n return this.record.alignmentStart + this.record.lengthOnRef - 1\n }\n\n _get_cram_read_features() {\n return this.record.readFeatures\n }\n\n _get_type() {\n return 'match'\n }\n\n _get_score() {\n return this.record.mappingQuality\n }\n\n _get_flags() {\n return this.record.flags\n }\n\n _get_strand() {\n return this.record.isReverseComplemented() ? -1 : 1\n }\n\n _read_group_id() {\n const rg = this._store.samHeader.readGroups\n return rg ? rg[this.record.readGroupId] : undefined\n }\n\n _get_qual() {\n return (this.record.qualityScores || []).join(' ')\n }\n\n qualRaw() {\n return this.record.qualityScores\n }\n\n _get_seq_id() {\n return this._store.refIdToName(this.record.sequenceId)\n }\n\n _get_refName() {\n return this._get_seq_id()\n }\n\n _get_is_paired() {\n return !!this.record.mate\n }\n\n _get_pair_orientation() {\n return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n }\n\n _get_template_length() {\n return this.record.templateLength || this.record.templateSize\n }\n\n _get_next_seq_id() {\n return this.record.mate\n ? this._store.refIdToName(this.record.mate.sequenceId)\n : undefined\n }\n\n _get_next_pos() {\n return this.record.mate ? this.record.mate.alignmentStart : undefined\n }\n\n _get_next_segment_position() {\n return this.record.mate\n ? `${this._store.refIdToName(this.record.mate.sequenceId)}:${\n this.record.mate.alignmentStart\n }`\n : undefined\n }\n\n _get_tags() {\n const RG = this._read_group_id()\n const { tags } = this.record\n // avoids a tag copy if no RG, but just copy if there is one\n return RG !== undefined ? { ...tags, RG } : tags\n }\n\n _get_seq() {\n return this.record.getReadBases()\n }\n\n // generate a CIGAR, based on code from jkbonfield\n _get_CIGAR() {\n let seq = ''\n let cigar = ''\n let op = 'M'\n let oplen = 0\n\n // not sure I should access these, but...\n const ref = this.record._refRegion.seq\n const refStart = this.record._refRegion.start\n let last_pos = this.record.alignmentStart\n let sublen = 0\n if (typeof this.record.readFeatures !== 'undefined') {\n // @ts-ignore\n this.record.readFeatures.forEach(({ code, refPos, sub, data }) => {\n sublen = refPos - last_pos\n seq += ref.substring(last_pos - refStart, refPos - refStart)\n last_pos = refPos\n\n if (oplen && op !== 'M') {\n cigar += oplen + op\n oplen = 0\n }\n if (sublen) {\n op = 'M'\n oplen += sublen\n }\n\n if (code === 'b') {\n // An array of bases stored verbatim\n const ret = data.split(',')\n const added = String.fromCharCode(...ret)\n seq += added\n last_pos += added.length\n oplen += added.length\n } else if (code === 'B') {\n // Single base (+ qual score)\n seq += sub\n last_pos++\n oplen++\n } else if (code === 'X') {\n // Substitution\n seq += sub\n last_pos++\n oplen++\n } else if (code === 'D' || code === 'N') {\n // Deletion or Ref Skip\n last_pos += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += data + code\n oplen = 0\n } else if (code === 'I' || code === 'S') {\n // Insertion or soft-clip\n seq += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += data.length + code\n oplen = 0\n } else if (code === 'i') {\n // Single base insertion\n seq += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${1}I`\n oplen = 0\n } else if (code === 'P') {\n // Padding\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${data}P`\n } else if (code === 'H') {\n // Hard clip\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${data}H`\n oplen = 0\n } // else q or Q\n })\n } else {\n sublen = this.record.readLength - seq.length\n }\n if (seq.length !== this.record.readLength) {\n sublen = this.record.readLength - seq.length\n seq += ref.substring(last_pos - refStart, last_pos - refStart + sublen)\n\n if (oplen && op !== 'M') {\n cigar += oplen + op\n oplen = 0\n }\n op = 'M'\n oplen += sublen\n }\n if (oplen) {\n cigar += oplen + op\n }\n return cigar\n }\n\n tags() {\n const properties = Object.getOwnPropertyNames(\n CramSlightlyLazyFeature.prototype,\n )\n return properties\n .filter(\n prop =>\n prop.startsWith('_get_') &&\n prop !== '_get_mismatches' &&\n prop !== '_get_skips_and_dels' &&\n prop !== '_get_cram_read_features',\n )\n .map(methodName => methodName.replace('_get_', ''))\n }\n\n id() {\n return `${this._store.id}-${this.record.uniqueId}`\n }\n\n get(field: string) {\n const methodName = `_get_${field}`\n // @ts-ignore\n if (this[methodName]) {\n // @ts-ignore\n return this[methodName]()\n }\n return undefined\n }\n\n parent(): undefined | Feature {\n return undefined\n }\n\n children(): undefined | Feature[] {\n return undefined\n }\n\n set(): void {}\n\n pairedFeature() {\n return false\n }\n\n _get_clipPos() {\n const mismatches = this.get('mismatches')\n if (mismatches.length) {\n const record =\n this.get('strand') === -1\n ? mismatches[mismatches.length - 1]\n : mismatches[0]\n const { type, cliplen } = record\n if (type === 'softclip' || type === 'hardclip') {\n return cliplen\n }\n }\n return 0\n }\n\n toJSON(): SimpleFeatureSerialized {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tags: Record<string, any> = {}\n this.tags().forEach((t: string) => {\n const val = this.get(t)\n if (val !== undefined) {\n tags[t] = val\n }\n })\n\n return {\n ...tags,\n name: this.get('name'),\n type: this.get('type'),\n uniqueId: this.id(),\n }\n }\n\n _get_mismatches(): Mismatch[] {\n const readFeatures = this.get('cram_read_features')\n const qual = this.qualRaw()\n if (!readFeatures) {\n return []\n }\n const start = this.get('start')\n const mismatches: Mismatch[] = []\n readFeatures.forEach(\n (args: {\n code: string\n refPos: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any\n pos: number\n sub: string\n ref: string\n }) => {\n const { code, pos, data, sub, ref } = args\n const refPos = args.refPos - 1 - start\n if (code === 'X') {\n // substitution\n mismatches.push({\n start: refPos,\n length: 1,\n base: sub,\n qual: qual?.[pos],\n altbase: ref,\n type: 'mismatch',\n })\n } else if (code === 'I') {\n // insertion\n mismatches.push({\n start: refPos,\n type: 'insertion',\n base: `${data.length}`,\n length: 0,\n })\n } else if (code === 'N') {\n // reference skip\n mismatches.push({\n type: 'skip',\n length: data,\n start: refPos,\n base: 'N',\n })\n } else if (code === 'S') {\n // soft clip\n const len = data.length\n mismatches.push({\n start: refPos,\n type: 'softclip',\n base: `S${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (code === 'P') {\n // padding\n } else if (code === 'H') {\n // hard clip\n const len = data\n mismatches.push({\n start: refPos,\n type: 'hardclip',\n base: `H${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (code === 'D') {\n // deletion\n mismatches.push({\n type: 'deletion',\n length: data,\n start: refPos,\n base: '*',\n })\n } else if (code === 'b') {\n // stretch of bases\n } else if (code === 'q') {\n // stretch of qual scores\n } else if (code === 'B') {\n // a pair of [base, qual]\n } else if (code === 'i') {\n // single-base insertion\n // insertion\n mismatches.push({\n start: refPos,\n type: 'insertion',\n base: data,\n length: 1,\n })\n } else if (code === 'Q') {\n // single quality value\n }\n },\n )\n return mismatches\n }\n\n _get_skips_and_dels(): Mismatch[] {\n return this._get_mismatches()\n }\n}\n","import { CraiIndex, IndexedCramFile } from '@gmod/cram'\nimport {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { checkAbortSignal } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { toArray } from 'rxjs/operators'\nimport CramSlightlyLazyFeature from './CramSlightlyLazyFeature'\n\ninterface HeaderLine {\n tag: string\n value: any // eslint-disable-line @typescript-eslint/no-explicit-any\n data: HeaderLine[]\n}\ninterface Header {\n idToName?: string[]\n nameToId?: Record<string, number>\n readGroups?: number[]\n}\n\nexport default class CramAdapter extends BaseFeatureDataAdapter {\n samHeader: Header = {}\n\n private setupP?: Promise<{\n samHeader: Header\n cram: any // eslint-disable-line @typescript-eslint/no-explicit-any\n sequenceAdapter: any // eslint-disable-line @typescript-eslint/no-explicit-any\n }>\n\n // maps a refname to an id\n private seqIdToRefName: string[] | undefined\n\n // maps a seqId to original refname, passed specially to render args, to a seqid\n private seqIdToOriginalRefName: string[] = []\n\n public async configure() {\n const cramLocation = readConfObject(this.config, 'cramLocation')\n const craiLocation = readConfObject(this.config, 'craiLocation')\n if (!cramLocation) {\n throw new Error('missing cramLocation argument')\n }\n if (!craiLocation) {\n throw new Error('missing craiLocation argument')\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cram: any = new IndexedCramFile({\n cramFilehandle: openLocation(cramLocation, this.pluginManager),\n index: new CraiIndex({\n filehandle: openLocation(craiLocation, this.pluginManager),\n }),\n seqFetch: this.seqFetch.bind(this),\n checkSequenceMD5: false,\n fetchSizeLimit: 200_000_000, // just make this a large size to avoid hitting it\n })\n // instantiate the sequence adapter\n const sequenceAdapterType = readConfObject(this.config, [\n 'sequenceAdapter',\n 'type',\n ])\n\n if (!this.getSubAdapter) {\n throw new Error('Error getting subadapter')\n }\n\n const seqConf = readConfObject(this.config, 'sequenceAdapter')\n const { dataAdapter: sequenceAdapter } = await this.getSubAdapter(seqConf)\n\n if (!(sequenceAdapter instanceof BaseFeatureDataAdapter)) {\n throw new Error(\n `CRAM feature adapters cannot use sequence adapters of type '${sequenceAdapterType}'`,\n )\n }\n\n return { cram, sequenceAdapter }\n }\n\n async getHeader(opts?: BaseOptions) {\n const { cram } = await this.configure()\n return cram.cram.getHeaderText(opts)\n }\n\n private async seqFetch(seqId: number, start: number, end: number) {\n start -= 1 // convert from 1-based closed to interbase\n\n const { sequenceAdapter } = await this.configure()\n const refName = this.refIdToOriginalName(seqId) || this.refIdToName(seqId)\n if (!refName) {\n return undefined\n }\n\n const seqChunks = await sequenceAdapter\n .getFeatures({\n refName,\n start,\n end,\n assemblyName: '',\n })\n .pipe(toArray())\n .toPromise()\n\n const sequence = seqChunks\n .sort((a, b) => a.get('start') - b.get('start'))\n .map(chunk => {\n const chunkStart = chunk.get('start')\n const chunkEnd = chunk.get('end')\n const trimStart = Math.max(start - chunkStart, 0)\n const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n const trimLength = trimEnd - trimStart\n const chunkSeq = chunk.get('seq') || chunk.get('residues')\n return chunkSeq.substr(trimStart, trimLength)\n })\n .join('')\n\n if (sequence.length !== end - start) {\n throw new Error(\n `sequence fetch failed: fetching ${refName}:${(\n start - 1\n ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n end - start\n ).toLocaleString()}`,\n )\n }\n return sequence\n }\n\n private async setupPre(opts?: BaseOptions) {\n const { statusCallback = () => {} } = opts || {}\n const configured = await this.configure()\n statusCallback('Downloading index')\n const { cram } = configured\n const samHeader: HeaderLine[] = await cram.cram.getSamHeader(opts?.signal)\n\n // use the @SQ lines in the header to figure out the\n // mapping between ref ID numbers and names\n const idToName: string[] = []\n const nameToId: Record<string, number> = {}\n samHeader\n .filter(l => l.tag === 'SQ')\n .forEach((sqLine, refId) => {\n sqLine.data.forEach(item => {\n if (item.tag === 'SN') {\n // this is the ref name\n const refName = item.value\n nameToId[refName] = refId\n idToName[refId] = refName\n }\n })\n })\n\n const readGroups = samHeader\n .filter(l => l.tag === 'RG')\n .map(rgLine => rgLine.data.find(item => item.tag === 'ID')?.value)\n\n const data = { idToName, nameToId, readGroups }\n statusCallback('')\n this.samHeader = data\n return { samHeader: data, ...configured }\n }\n\n private async setup(opts?: BaseOptions) {\n if (!this.setupP) {\n this.setupP = this.setupPre(opts).catch(e => {\n this.setupP = undefined\n throw e\n })\n }\n return this.setupP\n }\n\n async getRefNames(opts?: BaseOptions) {\n const { samHeader } = await this.setup(opts)\n if (!samHeader.idToName) {\n throw new Error('CRAM file has no header lines')\n }\n return samHeader.idToName\n }\n\n // use info from the SAM header if possible, but fall back to using\n // the ref seq order from when the browser's refseqs were loaded\n refNameToId(refName: string) {\n if (this.samHeader.nameToId) {\n return this.samHeader.nameToId[refName]\n }\n if (this.seqIdToRefName) {\n return this.seqIdToRefName.indexOf(refName)\n }\n return undefined\n }\n\n // use info from the SAM header if possible, but fall back to using\n // the ref seq order from when the browser's refseqs were loaded\n refIdToName(refId: number) {\n if (this.samHeader.idToName) {\n return this.samHeader.idToName[refId]\n }\n if (this.seqIdToRefName) {\n return this.seqIdToRefName[refId]\n }\n return undefined\n }\n\n refIdToOriginalName(refId: number) {\n return this.seqIdToOriginalRefName[refId]\n }\n\n getFeatures(\n region: Region & { originalRefName?: string },\n opts?: BaseOptions,\n ) {\n const { signal, statusCallback = () => {} } = opts || {}\n const { refName, start, end, originalRefName } = region\n\n return ObservableCreate<Feature>(async observer => {\n const { cram, sequenceAdapter } = await this.setup(opts)\n statusCallback('Downloading alignments')\n if (!this.seqIdToRefName) {\n this.seqIdToRefName = await sequenceAdapter.getRefNames(opts)\n }\n const refId = this.refNameToId(refName)\n if (refId !== undefined) {\n if (originalRefName) {\n this.seqIdToOriginalRefName[refId] = originalRefName\n }\n const records = await cram.getRecordsForRange(refId, start, end, opts)\n checkAbortSignal(signal)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n records.forEach((record: any) => {\n observer.next(this.cramRecordToFeature(record))\n })\n } else {\n console.warn('Unknown refName', refName)\n }\n statusCallback('')\n observer.complete()\n }, signal)\n }\n\n freeResources(/* { region } */): void {}\n\n cramRecordToFeature(record: unknown) {\n return new CramSlightlyLazyFeature(record, this)\n }\n\n // we return the configured fetchSizeLimit, and the bytes for the region\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const bytes = await this.bytesForRegions(regions, opts)\n const fetchSizeLimit = readConfObject(this.config, 'fetchSizeLimit')\n return {\n bytes,\n fetchSizeLimit,\n }\n }\n\n /**\n * get the approximate number of bytes queried from the file for the given\n * query regions\n * @param regions - list of query regions\n */\n private async bytesForRegions(regions: Region[], _opts?: BaseOptions) {\n const { cram } = await this.configure()\n const blockResults = await Promise.all(\n regions.map(region => {\n const { refName, start, end } = region\n const chrId = this.refNameToId(refName)\n return cram.index.getEntriesForRange(chrId, start, end)\n }),\n )\n\n return blockResults.flat().reduce((a, b) => a + b.sliceBytes, 0)\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {\n Feature,\n SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { BamRecord } from '@gmod/bam'\nimport {\n parseCigar,\n generateMD,\n cigarToMismatches,\n mdToMismatches,\n Mismatch,\n} from './MismatchParser'\n\nimport BamAdapter from './BamAdapter'\n\nexport default class BamSlightlyLazyFeature implements Feature {\n private cachedMD = ''\n constructor(\n private record: BamRecord,\n private adapter: BamAdapter,\n private ref?: string,\n ) {}\n\n _get_name() {\n return this.record.get('name')\n }\n\n _get_type(): string {\n return 'match'\n }\n\n _get_score(): number {\n return this.record.get('mq')\n }\n\n _get_flags(): string {\n return this.record.flags\n }\n\n _get_strand(): number {\n return this.record.isReverseComplemented() ? -1 : 1\n }\n\n _get_pair_orientation() {\n return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n }\n\n _get_next_seq_id() {\n return this.record._next_refid()\n }\n\n _get_seq_id() {\n // @ts-ignore\n return this.record._refID\n }\n\n _get_next_refName() {\n return this.adapter.refIdToName(this.record._next_refid())\n }\n\n _get_next_segment_position() {\n const { record, adapter } = this\n return record.isPaired()\n ? `${adapter.refIdToName(record._next_refid())}:${record._next_pos() + 1}`\n : undefined\n }\n\n _get_seq() {\n return this.record.getReadBases()\n }\n\n _get_MD() {\n const md = this.record.get('MD') || this.cachedMD\n if (!md) {\n const seq = this.get('seq')\n if (seq && this.ref) {\n this.cachedMD = generateMD(this.ref, this.get('seq'), this.get('CIGAR'))\n return this.cachedMD\n }\n }\n return md\n }\n\n qualRaw() {\n return this.record.qualRaw()\n }\n\n set() {}\n\n tags() {\n const properties = Object.getOwnPropertyNames(\n BamSlightlyLazyFeature.prototype,\n )\n\n return [\n ...new Set(\n properties\n .filter(\n prop =>\n prop.startsWith('_get_') &&\n prop !== '_get_mismatches' &&\n prop !== '_get_skips_and_dels' &&\n prop !== '_get_cram_read_features' &&\n prop !== '_get_tags' &&\n prop !== '_get_next_seq_id' &&\n prop !== '_get_seq_id',\n )\n .map(methodName => methodName.replace('_get_', ''))\n .concat(this.record._tags()),\n ),\n ]\n }\n\n id() {\n return `${this.adapter.id}-${this.record.id()}`\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(field: string): any {\n const methodName = `_get_${field}`\n // @ts-ignore\n if (this[methodName]) {\n // @ts-ignore\n return this[methodName]()\n }\n return this.record.get(field)\n }\n\n _get_refName() {\n return this.adapter.refIdToName(this.record.seq_id())\n }\n\n parent() {\n return undefined\n }\n\n children() {\n return undefined\n }\n\n pairedFeature() {\n return false\n }\n\n toJSON(): SimpleFeatureSerialized {\n return {\n ...Object.fromEntries(\n this.tags()\n .map(t => [t, this.get(t)])\n .filter(elt => elt[1] !== undefined),\n ),\n uniqueId: this.id(),\n }\n }\n\n _get_skips_and_dels(\n opts: {\n cigarAttributeName: string\n } = {\n cigarAttributeName: 'CIGAR',\n },\n ) {\n const { cigarAttributeName } = opts\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n const cigarString = this.get(cigarAttributeName)\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(\n cigarToMismatches(cigarOps, this.get('seq'), this.qualRaw()),\n )\n }\n return mismatches\n }\n\n _get_mismatches({\n cigarAttributeName = 'CIGAR',\n mdAttributeName = 'MD',\n }: {\n cigarAttributeName?: string\n mdAttributeName?: string\n } = {}) {\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n const cigarString = this.get(cigarAttributeName)\n const seq = this.get('seq')\n const qual = this.qualRaw()\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(cigarToMismatches(cigarOps, seq, qual))\n }\n\n // now let's look for CRAM or MD mismatches\n const mdString = this.get(mdAttributeName)\n if (mdString) {\n mismatches = mismatches.concat(\n mdToMismatches(mdString, cigarOps, mismatches, seq, qual),\n )\n }\n\n // uniqify the mismatches\n const seen: { [index: string]: boolean } = {}\n return mismatches.filter(m => {\n const key = `${m.type},${m.start},${m.length}`\n const s = seen[key]\n seen[key] = true\n return !s\n })\n }\n\n _get_clipPos() {\n const cigar = this.get('CIGAR') || ''\n return this.get('strand') === -1\n ? +(cigar.match(/(\\d+)[SH]$/) || [])[1] || 0\n : +(cigar.match(/^(\\d+)([SH])/) || [])[1] || 0\n }\n}\n","import { BamFile } from '@gmod/bam'\nimport {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport {\n checkAbortSignal,\n bytesForRegions,\n updateStatus,\n} from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { toArray } from 'rxjs/operators'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport BamSlightlyLazyFeature from './BamSlightlyLazyFeature'\n\ninterface Header {\n idToName: string[]\n nameToId: Record<string, number>\n}\n\nexport default class BamAdapter extends BaseFeatureDataAdapter {\n private samHeader?: Header\n\n private setupP?: Promise<Header>\n\n protected configured?: Promise<{\n bam: BamFile\n sequenceAdapter?: BaseFeatureDataAdapter\n }>\n\n // derived classes may not use the same configuration so a custom\n // configure method allows derived classes to override this behavior\n protected async configure() {\n if (!this.configured) {\n const bamLocation = readConfObject(this.config, 'bamLocation')\n const location = readConfObject(this.config, ['index', 'location'])\n const indexType = readConfObject(this.config, ['index', 'indexType'])\n const chunkSizeLimit = readConfObject(this.config, 'chunkSizeLimit')\n const bam = new BamFile({\n bamFilehandle: openLocation(bamLocation, this.pluginManager),\n csiFilehandle:\n indexType === 'CSI'\n ? openLocation(location, this.pluginManager)\n : undefined,\n baiFilehandle:\n indexType !== 'CSI'\n ? openLocation(location, this.pluginManager)\n : undefined,\n chunkSizeLimit,\n fetchSizeLimit: 100_000_000,\n })\n\n const adapterConfig = readConfObject(this.config, 'sequenceAdapter')\n if (adapterConfig && this.getSubAdapter) {\n this.configured = this.getSubAdapter(adapterConfig).then(\n ({ dataAdapter }) => ({\n bam,\n sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n }),\n )\n } else {\n this.configured = Promise.resolve({ bam })\n }\n }\n return this.configured\n }\n\n async getHeader(opts?: BaseOptions) {\n const { bam } = await this.configure()\n return bam.getHeaderText(opts)\n }\n\n private async setupPre(opts?: BaseOptions) {\n const { statusCallback = () => {} } = opts || {}\n const { bam } = await this.configure()\n this.samHeader = await updateStatus(\n 'Downloading index',\n statusCallback,\n async () => {\n const samHeader = await bam.getHeader(opts)\n\n // use the @SQ lines in the header to figure out the\n // mapping between ref ref ID numbers and names\n const idToName: string[] = []\n const nameToId: Record<string, number> = {}\n samHeader\n .filter(l => l.tag === 'SQ')\n .forEach((sqLine, refId) => {\n sqLine.data.forEach(item => {\n if (item.tag === 'SN') {\n // this is the ref name\n const refName = item.value\n nameToId[refName] = refId\n idToName[refId] = refName\n }\n })\n })\n\n return { idToName, nameToId }\n },\n )\n return this.samHeader\n }\n\n private async setup(opts?: BaseOptions) {\n if (!this.setupP) {\n this.setupP = this.setupPre(opts).catch(e => {\n this.setupP = undefined\n throw e\n })\n }\n return this.setupP\n }\n\n async getRefNames(opts?: BaseOptions) {\n const { idToName } = await this.setup(opts)\n return idToName\n }\n\n private async seqFetch(refName: string, start: number, end: number) {\n const { sequenceAdapter } = await this.configure()\n const refSeqStore = sequenceAdapter\n if (!refSeqStore) {\n return undefined\n }\n if (!refName) {\n return undefined\n }\n\n const features = refSeqStore.getFeatures({\n refName,\n start,\n end,\n assemblyName: '',\n })\n\n const seqChunks = await features.pipe(toArray()).toPromise()\n\n const trimmed: string[] = []\n seqChunks\n .sort((a, b) => a.get('start') - b.get('start'))\n .forEach(chunk => {\n const chunkStart = chunk.get('start')\n const chunkEnd = chunk.get('end')\n const trimStart = Math.max(start - chunkStart, 0)\n const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n const trimLength = trimEnd - trimStart\n const chunkSeq = chunk.get('seq') || chunk.get('residues')\n trimmed.push(chunkSeq.substr(trimStart, trimLength))\n })\n\n const sequence = trimmed.join('')\n if (sequence.length !== end - start) {\n throw new Error(\n `sequence fetch failed: fetching ${refName}:${(\n start - 1\n ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n end - start\n ).toLocaleString()}`,\n )\n }\n return sequence\n }\n\n getFeatures(\n region: Region & { originalRefName?: string },\n opts?: BaseOptions,\n ) {\n const { refName, start, end, originalRefName } = region\n const { signal, statusCallback = () => {} } = opts || {}\n return ObservableCreate<Feature>(async observer => {\n const { bam } = await this.configure()\n await this.setup(opts)\n statusCallback('Downloading alignments')\n const records = await bam.getRecordsForRange(refName, start, end, opts)\n\n checkAbortSignal(signal)\n\n for (const record of records) {\n let ref: string | undefined\n if (!record.get('md')) {\n ref = await this.seqFetch(\n originalRefName || refName,\n record.get('start'),\n record.get('end'),\n )\n }\n observer.next(new BamSlightlyLazyFeature(record, this, ref))\n }\n statusCallback('')\n observer.complete()\n }, signal)\n }\n\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const { bam } = await this.configure()\n // this is a method to avoid calling on htsget adapters\n // @ts-ignore\n if (bam.index.filehandle !== '?') {\n const bytes = await bytesForRegions(regions, bam)\n const fetchSizeLimit = readConfObject(this.config, 'fetchSizeLimit')\n return { bytes, fetchSizeLimit }\n } else {\n return super.estimateRegionsStats(regions, opts)\n }\n }\n\n freeResources(/* { region } */): void {}\n\n // depends on setup being called before the BAM constructor\n refIdToName(refId: number): string | undefined {\n return this.samHeader?.idToName[refId]\n }\n}\n","import { BamFile, HtsgetFile } from '@gmod/bam'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport BamAdapter from '../BamAdapter/BamAdapter'\n\nexport default class HtsgetBamAdapter extends BamAdapter {\n protected async configure() {\n if (!this.configured) {\n const htsgetBase = readConfObject(this.config, 'htsgetBase')\n const htsgetTrackId = readConfObject(this.config, 'htsgetTrackId')\n const bam = new HtsgetFile({\n baseUrl: htsgetBase,\n trackId: htsgetTrackId,\n }) as unknown as BamFile\n\n const adapterConfig = readConfObject(this.config, 'sequenceAdapter')\n if (adapterConfig && this.getSubAdapter) {\n this.configured = this.getSubAdapter(adapterConfig).then(\n ({ dataAdapter }) => {\n return {\n bam,\n sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n }\n },\n )\n }\n this.configured = Promise.resolve({ bam })\n }\n return this.configured\n }\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 300,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction ColorByTagDlg(props: {\n model: { setColorScheme: Function }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const [tag, setTag] = useState('')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Color by tag\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent style={{ overflowX: 'hidden' }}>\n <div className={classes.root}>\n <Typography>Enter tag to color by: </Typography>\n <Typography color=\"textSecondary\">\n Examples: XS or TS for RNA-seq inferred read strand, ts (lower-case)\n for minimap2 read strand, HP for haplotype, RG for read group, etc.\n </Typography>\n\n <TextField\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'color-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n autoComplete=\"off\"\n data-testid=\"color-tag-name\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ marginLeft: 20 }}\n onClick={() => {\n model.setColorScheme({\n type: 'tag',\n tag,\n })\n handleClose()\n }}\n disabled={!validTag}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(ColorByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Link,\n Paper,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n paper: {\n padding: theme.spacing(2),\n margin: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nconst flagNames = [\n 'read paired',\n 'read mapped in proper pair',\n 'read unmapped',\n 'mate unmapped',\n 'read reverse strand',\n 'mate reverse strand',\n 'first in pair',\n 'second in pair',\n 'not primary alignment',\n 'read fails platform/vendor quality checks',\n 'read is PCR or optical duplicate',\n 'supplementary alignment',\n]\n\nfunction Bitmask(props: { flag?: number; setFlag: Function }) {\n const { flag = 0, setFlag } = props\n return (\n <>\n <TextField\n type=\"number\"\n value={flag}\n onChange={event => setFlag(+event.target.value)}\n />\n {flagNames.map((name, index) => {\n const val = flag & (1 << index)\n const key = `${name}_${val}`\n return (\n <div key={key}>\n <input\n type=\"checkbox\"\n checked={Boolean(val)}\n onChange={event => {\n if (event.target.checked) {\n setFlag(flag | (1 << index))\n } else {\n setFlag(flag & ~(1 << index))\n }\n }}\n />\n <label htmlFor={key}>{name}</label>\n </div>\n )\n })}\n </>\n )\n}\n\nfunction FilterByTagDlg(props: {\n model: {\n filterBy?: {\n flagExclude: number\n flagInclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }\n setFilterBy: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { filterBy } = model\n const [flagInclude, setFlagInclude] = useState(filterBy?.flagInclude)\n const [flagExclude, setFlagExclude] = useState(filterBy?.flagExclude)\n const [tag, setTag] = useState(filterBy?.tagFilter?.tag || '')\n const [tagValue, setTagValue] = useState(filterBy?.tagFilter?.value || '')\n const [readName, setReadName] = useState(filterBy?.readName || '')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n\n const site = 'https://broadinstitute.github.io/picard/explain-flags.html'\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Typography>\n Set filter bitmask options. Refer to <Link href={site}>{site}</Link>{' '}\n for details\n </Typography>\n <div className={classes.root}>\n <Paper className={classes.paper} variant=\"outlined\">\n <div style={{ display: 'flex' }}>\n <div>\n <Typography>Read must have ALL these flags</Typography>\n <Bitmask flag={flagInclude} setFlag={setFlagInclude} />\n </div>\n <div>\n <Typography>Read must have NONE of these flags</Typography>\n <Bitmask flag={flagExclude} setFlag={setFlagExclude} />\n </div>\n </div>\n </Paper>\n <Paper className={classes.paper} variant=\"outlined\">\n <Typography>\n Filter by tag name and value. Use * in the value field to get all\n reads containing any value for that tag. Example: filter tag name\n SA with value * to get all split/supplementary reads. Other\n examples include HP for haplotype, or RG for read group\n </Typography>\n <TextField\n className={classes.field}\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'color-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={\n tag.length === 2 && !validTag ? 'Not a valid tag' : ''\n }\n data-testid=\"color-tag-name\"\n />\n <TextField\n className={classes.field}\n value={tagValue}\n onChange={event => {\n setTagValue(event.target.value)\n }}\n placeholder=\"Enter tag value\"\n inputProps={{\n 'data-testid': 'color-tag-name-input',\n }}\n data-testid=\"color-tag-value\"\n />\n </Paper>\n <Paper className={classes.paper} variant=\"outlined\">\n <Typography>Filter by read name</Typography>\n <TextField\n className={classes.field}\n value={readName}\n onChange={event => {\n setReadName(event.target.value)\n }}\n placeholder=\"Enter read name\"\n inputProps={{\n 'data-testid': 'color-tag-readname-input',\n }}\n data-testid=\"color-tag-readname\"\n />\n </Paper>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n model.setFilterBy({\n flagInclude,\n flagExclude,\n readName,\n tagFilter:\n tag !== ''\n ? {\n tag,\n value: tagValue,\n }\n : undefined,\n })\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(FilterByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction SortByTagDlg(props: {\n model: { setSortedBy: Function }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const [tag, setTag] = useState('')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Sort by tag\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div>\n <Typography>Set the tag to sort by</Typography>\n <Typography color=\"textSecondary\">\n Examples: HP for haplotype, RG for read group, etc.\n </Typography>\n <TextField\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'sort-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n autoComplete=\"off\"\n data-testid=\"sort-tag-name\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n model.setSortedBy('tag', tag)\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\nexport default observer(SortByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n TextField,\n Typography,\n IconButton,\n Dialog,\n DialogContent,\n DialogTitle,\n Checkbox,\n FormControlLabel,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n margin: theme.spacing(4),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction SetFeatureHeightDlg(props: {\n model: {\n minScore: number\n maxScore: number\n setMinScore: Function\n setMaxScore: Function\n setFeatureHeight: Function\n setNoSpacing: Function\n featureHeightSetting: number\n noSpacing: boolean\n }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const { featureHeightSetting, noSpacing: noSpacingSetting } = model\n\n const [height, setHeight] = useState(`${featureHeightSetting}`)\n const [noSpacing, setNoSpacing] = useState(noSpacingSetting)\n\n const ok = height !== '' && !Number.isNaN(+height)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Set feature height\n <IconButton className={classes.closeButton} onClick={handleClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Typography>\n Adjust the feature height and whether there is any spacing between\n features. Setting feature height to 1 and removing spacing makes the\n display very compact\n </Typography>\n <div className={classes.root}>\n <Typography>Enter feature height: </Typography>\n <TextField\n value={height}\n onChange={event => {\n setHeight(event.target.value)\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={!!noSpacing}\n onChange={() => setNoSpacing(val => !val)}\n />\n }\n label=\"Remove spacing between features in y-direction?\"\n />\n\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n style={{ marginLeft: 20 }}\n disabled={!ok}\n onClick={() => {\n model.setFeatureHeight(\n height !== '' && !Number.isNaN(+height) ? +height : undefined,\n )\n model.setNoSpacing(noSpacing)\n\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetFeatureHeightDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nfunction SetMaxHeightDlg(props: {\n model: {\n maxHeight?: number\n setMaxHeight: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { maxHeight = '' } = model\n const [max, setMax] = useState(`${maxHeight}`)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle id=\"alert-dialog-title\">\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div className={classes.root}>\n <Typography>Set max height for the track</Typography>\n <TextField\n value={max}\n onChange={event => {\n setMax(event.target.value)\n }}\n placeholder=\"Enter max height for layout\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n style={{ marginLeft: 20 }}\n onClick={() => {\n model.setMaxHeight(\n max !== '' && !Number.isNaN(+max) ? +max : undefined,\n )\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetMaxHeightDlg)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ObservableMap } from 'mobx'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n CircularProgress,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n\n table: {\n border: '1px solid #888',\n margin: theme.spacing(4),\n '& td': {\n padding: theme.spacing(1),\n },\n },\n}))\n\nfunction ModificationTable({\n modifications,\n}: {\n modifications: [string, string][]\n}) {\n const classes = useStyles()\n return (\n <table className={classes.table}>\n <tbody>\n {modifications.map(([key, value]) => (\n <tr key={key}>\n <td>{key}</td>\n <td>{value}</td>\n <td\n style={{\n width: '1em',\n background: value,\n }}\n />\n </tr>\n ))}\n </tbody>\n </table>\n )\n}\n\nfunction ColorByTagDlg(props: {\n model: {\n setColorScheme: Function\n modificationTagMap: ObservableMap<string, string>\n colorBy?: { type: string }\n }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const { colorBy, modificationTagMap } = model\n\n const modifications = [...modificationTagMap.entries()]\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Color by modifications\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div className={classes.root}>\n <Typography>\n You can choose to color the modifications in the BAM/CRAM MM/ML\n specification using this dialog. Choosing modifications colors the\n modified positions and can color multiple modification types.\n Choosing the methylation setting colors methylated and unmethylated\n CpG.\n </Typography>\n <Typography>\n Note: you can revisit this dialog to see the current mapping of\n colors to modification type for the modification coloring mode\n </Typography>\n <div style={{ margin: 20 }}>\n {colorBy?.type === 'modifications' ? (\n <div>\n {modifications.length ? (\n <>\n Current modification-type-to-color mapping\n <ModificationTable\n modifications={[...modificationTagMap.entries()]}\n />\n </>\n ) : (\n <div>\n <Typography>\n Note: color by modifications is already enabled. Loading\n current modifications...\n </Typography>\n <CircularProgress size={15} />\n </div>\n )}\n </div>\n ) : null}\n {colorBy?.type === 'methylation' ? (\n <ModificationTable\n modifications={[\n ['methylated', 'red'],\n ['unmethylated', 'blue'],\n ]}\n />\n ) : null}\n </div>\n <div style={{ display: 'flex' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ margin: 5 }}\n onClick={() => {\n model.setColorScheme({\n type: 'modifications',\n })\n handleClose()\n }}\n >\n Modifications\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ margin: 5 }}\n onClick={() => {\n model.setColorScheme({\n type: 'methylation',\n })\n handleClose()\n }}\n >\n Methylation\n </Button>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n style={{ margin: 5 }}\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(ColorByTagDlg)\n","import React, { useState } from 'react'\nimport {\n Typography,\n Link,\n Paper,\n Checkbox,\n FormControlLabel,\n FormGroup,\n makeStyles,\n} from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport copy from 'copy-to-clipboard'\nimport {\n FeatureDetails,\n BaseCard,\n SimpleValue,\n} from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { parseCigar } from '../BamAdapter/MismatchParser'\n\nconst useStyles = makeStyles(() => ({\n compact: {\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 0,\n },\n}))\n\nconst omit = ['clipPos', 'flags']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction AlignmentFlags(props: { feature: any }) {\n const classes = useStyles()\n const { feature } = props\n const { flags } = feature\n const flagNames = [\n 'read paired',\n 'read mapped in proper pair',\n 'read unmapped',\n 'mate unmapped',\n 'read reverse strand',\n 'mate reverse strand',\n 'first in pair',\n 'second in pair',\n 'not primary alignment',\n 'read fails platform/vendor quality checks',\n 'read is PCR or optical duplicate',\n 'supplementary alignment',\n ]\n return (\n <BaseCard {...props} title=\"Flags\">\n <SimpleValue name={'Flag'} value={flags} />\n\n <FormGroup>\n {flagNames.map((name, index) => {\n const val = flags & (1 << index)\n const key = `${name}_${val}`\n return (\n <FormControlLabel\n key={key}\n control={\n <Checkbox\n className={classes.compact}\n checked={Boolean(val)}\n name={name}\n readOnly\n />\n }\n label={name}\n />\n )\n })}\n </FormGroup>\n </BaseCard>\n )\n}\n\nfunction Formatter({ value }: { value: unknown }) {\n const [show, setShow] = useState(false)\n const display = String(value)\n if (display.length > 100) {\n return (\n <>\n <button type=\"button\" onClick={() => copy(display)}>\n Copy\n </button>\n <button type=\"button\" onClick={() => setShow(val => !val)}>\n {show ? 'Show less' : 'Show more'}\n </button>\n <div>{show ? display : `${display.slice(0, 100)}...`}</div>\n </>\n )\n }\n return <div>{display}</div>\n}\n\n// utility function to get length of alignment from cigar\nfunction getLengthOnRef(cigar: string) {\n const cigarOps = parseCigar(cigar)\n let lengthOnRef = 0\n for (let i = 0; i < cigarOps.length; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op !== 'H' && op !== 'S' && op !== 'I') {\n lengthOnRef += len\n }\n }\n return lengthOnRef\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction SupplementaryAlignments(props: { tag: string; model: any }) {\n const { tag, model } = props\n const session = getSession(model)\n return (\n <BaseCard {...props} title=\"Supplementary alignments\">\n <Typography>List of supplementary alignment locations</Typography>\n <ul>\n {tag\n .split(';')\n .filter(SA => !!SA)\n .map((SA, index) => {\n const [saRef, saStart, saStrand, saCigar] = SA.split(',')\n const saLength = getLengthOnRef(saCigar)\n const extra = Math.floor(saLength / 5)\n const start = +saStart\n const end = +saStart + saLength\n const locString = `${saRef}:${Math.max(1, start - extra)}-${\n end + extra\n }`\n const displayStart = start.toLocaleString('en-US')\n const displayEnd = end.toLocaleString('en-US')\n const displayString = `${saRef}:${displayStart}-${displayEnd} (${saStrand})`\n return (\n <li key={`${locString}-${index}`}>\n <Link\n onClick={() => {\n const { view } = model\n try {\n if (view) {\n view.navToLocString(locString)\n } else {\n throw new Error(\n 'No view associated with this view anymore',\n )\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`)\n }\n }}\n href=\"#\"\n >\n {displayString}\n </Link>\n </li>\n )\n })}\n </ul>\n </BaseCard>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction PairLink({ locString, model }: { locString: string; model: any }) {\n const session = getSession(model)\n return (\n <Link\n onClick={() => {\n const { view } = model\n try {\n if (view) {\n view.navToLocString(locString)\n } else {\n session.notify(\n 'No view associated with this feature detail panel anymore',\n 'warning',\n )\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`)\n }\n }}\n href=\"#\"\n >\n {locString}\n </Link>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction AlignmentFeatureDetails(props: { model: any }) {\n const { model } = props\n const feat = JSON.parse(JSON.stringify(model.featureData))\n const SA = (feat.tags && feat.tags.SA) || feat.SA\n return (\n <Paper data-testid=\"alignment-side-drawer\">\n <FeatureDetails\n {...props}\n omit={omit}\n feature={feat}\n formatter={(value: unknown, key: string) => {\n return key === 'next_segment_position' ? (\n <PairLink model={model} locString={value as string} />\n ) : (\n <Formatter value={value} />\n )\n }}\n />\n {SA ? <SupplementaryAlignments model={model} tag={SA} /> : null}\n <AlignmentFlags feature={feat} {...props} />\n </Paper>\n )\n}\n\nexport default observer(AlignmentFeatureDetails)\n"],"names":["runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","key","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","getNextRefPos","parseCigar","cigar","split","cigarToMismatches","ops","seq","qual","currOffset","seqOffset","mismatches","len","op","start","base","r","q","j","cliplen","mdToMismatches","mdstring","cigarOps","cigarMismatches","mismatchRecords","curr","skips","filter","lastCigar","lastTemplateOffset","lastRefOffset","lastSkipPos","nextRecord","getTemplateCoordLocal","refCoord","templateOffset","refOffset","md","match","token","num","Number","startsWith","substring","mismatch","s","substr","qualScore","altbase","getTemplateCoord","getMismatches","cigarString","mdString","concat","seen","m","generateMD","target","query","queryOffset","targetOffset","lengthMD","console","warn","str","toLowerCase","toUpperCase","tmp","positions","cigarIdx","readPos","refPos","pos","getModificationPositions","mm","fseq","fstrand","revcom","mod","map","basemod","matches","strand","typestr","types","f","score","delta","temp","sort","a","b","flat","getModificationTypes","mods","pluginManager","late","ConfigurationSchema","fetchSizeLimit","defaultValue","cramLocation","uri","locationType","craiLocation","sequenceAdapter","pluggableConfigSchemaType","explicitlyTyped","addAdapterType","AdapterType","configSchema","load","configSchemaF","getAdapterClass","bamLocation","index","indexType","model","enumeration","location","chunkSizeLimit","htsgetBase","htsgetTrackId","adapterMetadata","category","hiddenFromGUI","description","subadapter","getTag","feature","tag","tags","get","getTagAlt","alt","orientationTypes","fr","F1R2","F2R1","F1F2","F2F1","R1R2","R2R1","R1F2","R2F1","rf","ff","mismatchLen","isInterbase","inc","bin","field","total","strands","dec","SNPCoverageAdapter","subadapterConfig","readConfObject","config","sequenceConf","getSubAdapter","dataAdapter","region","opts","ObservableCreate","observer","configure","stream","getFeatures","filters","pipe","passes","generateCoverageBins","bins","skipmap","SimpleFeature","id","data","snpinfo","end","refName","entries","skip","xs","signal","regions","estimateRegionsStats","getRefNames","features","colorBy","originalRefName","binMax","Math","ceil","assemblyName","toArray","toPromise","feat","regionSeq","reduce","fstart","fend","lowqual","cov","delskips","noncov","ref","ml","probabilities","e","charCodeAt","elt","min","probIndex","epos","methBins","Array","fill","l1","l2","bin1","ms","interbase","mstart","hash","BaseFeatureDataAdapter","capabilities","configSchemaFactory","adapterCapabilities","clipColor","indicatorThreshold","drawArcs","drawInterbaseCounts","drawIndicators","SNPCoverageRenderer","ctx","props","bpPerPx","displayCrossHatches","modificationTagMap","scaleOpts","unadjustedHeight","height","configTheme","theme","cfg","ticks","createJBrowseTheme","width","offset","YSCALEBAR_LABEL_OFFSET","domain","range","viewScale","getScale","snpViewScale","scaleType","indicatorViewScale","originY","getOrigin","snpOriginY","toY","n","toHeight","snpToY","indicatorToY","snpToHeight","indicatorToHeight","colorForBase","A","palette","bases","main","C","G","T","insertion","softclip","hardclip","meth","unmeth","feats","coverage","fillStyle","featureSpanPx","leftPx","rightPx","w","fillRect","prevTotal","extraHorizontallyFlippedOffset","reversed","max","totalScore","replace","interbaseEvents","indicatorHeight","accum","maxBase","indicatorComparatorScore","beginPath","l","moveTo","lineTo","bpSpanPx","left","right","neg","neutral","strokeStyle","lineWidth","log","bezierCurveTo","stroke","tick","round","WiggleBaseRenderer","baseConfiguration","ConfigSchema","register","addRendererType","ReactComponent","WiggleRendering","sortFeature","sortedBy","featureArray","from","featuresInCenterLine","featuresOutsideCenter","innerArray","doesIntersect2","isCram","t","isString","localeCompare","baseSortArray","consuming","baseMap","Map","aMismatch","bMismatch","acode","bcode","sortedMap","PileupLayoutSession","args","cachedLayout","showSoftClip","deepEqual","cachedLayoutIsValid","layout","makeLayout","LayoutSession","getColorBaseMap","deletion","alignmentColoring","color_fwd_strand_not_proper","color_rev_strand_not_proper","color_fwd_strand","color_rev_strand","color_fwd_missing_mate","color_rev_missing_mate","color_fwd_diff_chr","color_rev_diff_chr","color_pair_lr","color_pair_rr","color_pair_rl","color_pair_ll","color_nostrand","color_interchrom","color_longinsert","color_shortinsert","shouldDrawMismatches","includes","PileupRenderer","charWidth","measureText","charHeight","heightPx","displayMode","expansionBefore","expansionAfter","topPx","addRect","renderArgs","maxClippingSize","bpExpansion","floor","getOrientation","orientationType","orientation","LR","RR","RL","LL","_config","abs","flags","revflag","flipper","scores","val","k","layoutFeature","modifications","col","Color","alpha","hsl","string","regionSequence","rstart","rend","leftPx2","rightPx2","flip","closePath","defaultColor","colorTagMap","colorType","colorByInsertSize","colorByOrientation","colorByStranded","foundValue","drawRect","colorByPerBaseQuality","colorByModifications","colorByMethylation","minWidth","minSubfeatureWidth","largeInsertionIndicatorScale","mismatchAlpha","drawSNPs","drawIndels","pxPerBp","heightLim","getAlphaColor","baseColor","color","mlen","mbase","widthPx","getContrastText","fillText","txt","rect","insW","adjustPx","clearRect","padding","minFeatWidth","getCharWidthHeight","softClipLength","softClipStart","softClipLeftPx","softClipRightPx","softClipWidthPx","layoutRecords","insertScale","font","drawAlignmentRect","drawMismatches","drawSoftClipping","featureMap","iterMap","size","renderProps","sessionId","adapterConfig","createLayoutInWorker","layoutFeats","getAdapter","getTotalHeight","renderToAbstractCanvas","makeImageData","res","results","maxHeightReached","BoxRendererType","canvasPadding","PileupRendering","onMouseMove","blockKey","displayModel","selectedFeatureId","featureIdUnderMouse","contextMenuFeature","highlightOverlayCanvas","useRef","useState","mouseIsDown","setMouseIsDown","movedDuringLastMouseDown","setMovedDuringLastMouseDown","useEffect","canvas","current","getContext","selectedRect","getFeatureByID","leftBp","rightBp","bottomPx","rectTop","rectHeight","shadowColor","shadowBlur","lineJoin","strokeRect","highlightedFeature","highlightedRect","onMouseDown","event","callMouseHandler","onMouseEnter","onMouseOut","onMouseOver","onMouseUp","onClick","onMouseLeave","onContextMenu","mouseMove","offsetX","offsetY","getBoundingClientRect","top","clientX","clientY","px","clientBp","featIdUnderMouse","getFeatureOverlapping","handlerName","featureHandler","canvasHandler","canvasWidth","React","className","style","position","PrerenderedCanvas","onFocus","onBlur","contextVariable","maxHeight","noSpacing","configModelFactory","PileupDisplayConfigSchema","getDisplayType","SNPCoverageDisplayConfigSchema","pileupDisplay","snpCoverageDisplay","baseLinearDisplayConfigSchema","minDisplayHeight","stateModelFactory","compose","BaseDisplay","PileupDisplay","maybe","stateModel","SNPCoverageDisplay","snpCovHeight","literal","configuration","ConfigurationReference","showCoverage","showPileup","userFeatureScreenDensity","number","scrollTop","actions","toggleCoverage","togglePileup","setScrollTop","setSNPCoverageHeight","views","superTrackMenuItems","trackMenuItems","pileupDisplayConfig","conf","getConf","track","getContainingTrack","displayId","searchFeatureByID","DisplayBlurb","sortedByPosition","sortedByRefName","snpCoverageDisplayConfig","label","subMenu","setSNPCoverageDisplay","displayConfig","setUserFeatureScreenDensity","limit","setPileupDisplay","setHeight","displayHeight","resizeHeight","distance","oldHeight","newHeight","afterAttach","addDisposer","autorun","getSnapshot","setConfig","filterBy","setFilterBy","setColorBy","renderSvg","pileupHeight","when","ready","transform","overrideHeight","useStyles","makeStyles","resizeHandle","zIndex","AlignmentsDisplay","classes","RenderingComponent","ResizeHandle","onDrag","addDisplayType","DisplayType","modelFactory","trackType","viewType","SNPCoverageConfigFactory","SNPCoverageRendererConfigSchema","getRendererType","autoscale","minScore","MIN_VALUE","maxScore","MAX_VALUE","inverted","multiTicks","renderers","en","toLocaleString","TooltipContents","forwardRef","join","SNPCoverageTooltip","featureUnderMouse","Tooltip","getUniqueTagValues","colorScheme","blocks","getSession","rpcManager","getRpcSessionId","contentBlocks","getUniqueModificationValues","rendererTypes","linearWiggleDisplayModelFactory","optional","flagInclude","flagExclude","readName","tagFilter","observable","cast","updateModificationColorMap","uniqueModifications","colorPalette","has","newColor","set","superRenderProps","rendererConfig","configBlob","rendererTypeName","rendererType","getEnv","drawArcsSetting","drawInterbaseCountsSetting","drawIndicatorsSetting","modificationsReady","JSON","parse","stringify","superProps","notReady","toggleDrawIndicators","toggleDrawInterbaseCounts","toggleDrawArcs","getContainingView","staticBlocks","parentTrack","vals","setError","delay","TooltipComponent","needsScalebar","contextMenuItems","checked","SerializableFilterChain","LinearWiggleDisplayReactComponent","PileupConfigFactory","PileupRendererConfigSchema","SvgFeatureRendererConfigSchema","defaultRendering","SvgFeatureRenderer","renderer","maxFeatureScreenDensity","linearBasicDisplayConfigSchemaFactory","LinearPileupDisplayBlurb","backgroundColor","Typography","variant","ColorByTagDlg","lazy","FilterByTagDlg","SortByTagDlg","SetFeatureHeightDlg","SetMaxHeightDlg","ModificationsDlg","BaseLinearDisplay","showSoftClipping","featureHeight","fadeLikelihood","trackMaxHeight","extra","frozen","setReady","flag","setMaxHeight","setFeatureHeight","setNoSpacing","setColorScheme","totalKeys","updateColorTagMap","uniqueTag","view","uniqueTagSet","uniqueModificationsSet","renderInClient","timeout","setCurrBpPerPx","selectFeature","session","isSessionModelWithWidgets","featureWidget","addWidget","featureData","toJSON","showWidget","setSelection","clearSelected","copyFeatureToClipboard","uniqueId","rest","copy","notify","toggleSoftClipping","toggleMismatchAlpha","setSortedBy","centerLineInfo","centerBp","centerRefName","superReload","reload","featureHeightSetting","mismatchAlphaSetting","viewName","icon","MenuOpenIcon","clearFeatureSelection","ContentCopyIcon","rpcDriverName","currBpPerPx","VisibilityIcon","SortIcon","disabled","option","queueDialog","doneCallback","handleClose","PaletteIcon","FilterListIcon","BaseLinearDisplayComponent","createBaseTrackConfig","addTrackType","TrackType","createBaseTrackModel","linearAlignmentsDisplay","ElementId","safeReference","pluggableMstType","setFeatureData","clearFeatureData","addWidgetType","WidgetType","heading","PileupGetGlobalValueForTag","rpcDriverClassName","rootModel","assemblyManager","renameRegionsIfNeeded","renamedArgs","deserializeArguments","deserializedArgs","getFeaturesInMultipleRegions","featuresArray","uniqueValues","Set","add","RpcMethodType","PileupGetVisibleModifications","AlignmentsPlugin","CramAdapterF","BamAdapterF","LinearPileupDisplayF","LinearSNPCoverageDisplayF","AlignmentsTrackF","SNPCoverageAdapterF","HtsgetBamAdapterF","PileupRendererF","SNPCoverageRendererF","LinearAlignmentsDisplayF","AlignmentsFeatureWidgetF","addToExtensionPoint","adapterGuesser","file","adapterHint","regexGuess","adapterName","fileName","getFileName","makeIndex","test","indexName","makeIndexType","trackTypeGuesser","addRpcMethod","Plugin","CramSlightlyLazyFeature","store","_store","alignmentStart","lengthOnRef","readFeatures","mappingQuality","isReverseComplemented","rg","samHeader","readGroups","readGroupId","qualityScores","refIdToName","sequenceId","_get_seq_id","mate","isPaired","getPairOrientation","templateLength","templateSize","RG","_read_group_id","getReadBases","oplen","_refRegion","refStart","last_pos","sublen","code","sub","ret","added","String","fromCharCode","readLength","properties","getOwnPropertyNames","prop","methodName","qualRaw","_get_mismatches","CramAdapter","cram","IndexedCramFile","cramFilehandle","openLocation","CraiIndex","filehandle","seqFetch","bind","checkSequenceMD5","sequenceAdapterType","seqConf","getHeaderText","seqId","refIdToOriginalName","seqChunks","sequence","chunk","chunkStart","chunkEnd","trimStart","trimEnd","trimLength","chunkSeq","statusCallback","configured","getSamHeader","idToName","nameToId","sqLine","refId","item","rgLine","find","setupP","setupPre","setup","seqIdToRefName","indexOf","seqIdToOriginalRefName","refNameToId","getRecordsForRange","records","checkAbortSignal","cramRecordToFeature","bytesForRegions","bytes","_opts","all","chrId","getEntriesForRange","blockResults","sliceBytes","BamSlightlyLazyFeature","adapter","_next_refid","_refID","_next_pos","cachedMD","_tags","seq_id","fromEntries","cigarAttributeName","mdAttributeName","BamAdapter","bam","BamFile","bamFilehandle","csiFilehandle","baiFilehandle","updateStatus","getHeader","refSeqStore","trimmed","HtsgetBamAdapter","HtsgetFile","baseUrl","trackId","root","closeButton","spacing","grey","setTag","validTag","Dialog","open","onClose","DialogTitle","IconButton","CloseIcon","DialogContent","overflowX","TextField","onChange","placeholder","inputProps","maxLength","helperText","autoComplete","Button","marginLeft","paper","margin","flagNames","Bitmask","setFlag","Boolean","htmlFor","setFlagInclude","setFlagExclude","tagValue","setTagValue","setReadName","site","Link","href","Paper","display","noSpacingSetting","ok","FormControlLabel","control","Checkbox","setMax","table","border","ModificationTable","background","CircularProgress","compact","paddingRight","paddingTop","paddingBottom","omit","AlignmentFlags","BaseCard","title","SimpleValue","FormGroup","readOnly","Formatter","show","setShow","getLengthOnRef","SupplementaryAlignments","SA","saRef","saStart","saStrand","saCigar","saLength","locString","displayStart","displayEnd","displayString","navToLocString","PairLink","AlignmentFeatureDetails","FeatureDetails","formatter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-alignments.cjs.development.js","sources":["../../../node_modules/regenerator-runtime/runtime.js","../src/BamAdapter/MismatchParser.ts","../src/CramAdapter/configSchema.ts","../src/CramAdapter/index.ts","../src/BamAdapter/configSchema.ts","../src/BamAdapter/index.ts","../src/HtsgetBamAdapter/configSchema.ts","../src/HtsgetBamAdapter/index.ts","../src/SNPCoverageAdapter/configSchema.ts","../src/util.ts","../src/SNPCoverageAdapter/SNPCoverageAdapter.ts","../src/SNPCoverageAdapter/index.ts","../src/SNPCoverageRenderer/configSchema.js","../src/SNPCoverageRenderer/SNPCoverageRenderer.ts","../src/SNPCoverageRenderer/index.ts","../src/PileupRenderer/sortUtil.ts","../src/PileupRenderer/PileupLayoutSession.ts","../src/PileupRenderer/PileupRenderer.tsx","../src/PileupRenderer/components/PileupRendering.tsx","../src/PileupRenderer/configSchema.ts","../src/PileupRenderer/index.ts","../src/LinearAlignmentsDisplay/models/configSchema.ts","../src/LinearAlignmentsDisplay/models/model.tsx","../src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx","../src/LinearAlignmentsDisplay/index.ts","../src/LinearSNPCoverageDisplay/models/configSchema.ts","../src/LinearSNPCoverageDisplay/components/Tooltip.tsx","../src/shared.ts","../src/LinearSNPCoverageDisplay/models/model.ts","../src/LinearSNPCoverageDisplay/index.ts","../src/LinearPileupDisplay/configSchema.ts","../src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx","../src/LinearPileupDisplay/model.ts","../src/LinearPileupDisplay/index.ts","../src/AlignmentsTrack/index.ts","../src/AlignmentsFeatureDetail/index.ts","../src/PileupRPC/rpcMethods.ts","../src/index.ts","../src/CramAdapter/CramSlightlyLazyFeature.ts","../src/CramAdapter/CramAdapter.ts","../src/BamAdapter/BamSlightlyLazyFeature.ts","../src/BamAdapter/BamAdapter.ts","../src/HtsgetBamAdapter/HtsgetBamAdapter.ts","../src/LinearPileupDisplay/components/ColorByTag.tsx","../src/LinearPileupDisplay/components/FilterByTag.tsx","../src/LinearPileupDisplay/components/SortByTag.tsx","../src/LinearPileupDisplay/components/SetFeatureHeight.tsx","../src/LinearPileupDisplay/components/SetMaxHeight.tsx","../src/LinearPileupDisplay/components/ColorByModifications.tsx","../src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { revcom } from '@jbrowse/core/util'\nexport interface Mismatch {\n qual?: number\n start: number\n length: number\n type: string\n base: string\n altbase?: string\n seq?: string\n cliplen?: number\n}\n\nexport function parseCigar(cigar: string) {\n return (cigar || '').split(/([MIDNSHPX=])/)\n}\nexport function cigarToMismatches(\n ops: string[],\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n let currOffset = 0\n let seqOffset = 0\n const mismatches: Mismatch[] = []\n for (let i = 0; i < ops.length - 1; i += 2) {\n const len = +ops[i]\n const op = ops[i + 1]\n if (op === 'M' || op === '=' || op === 'E') {\n seqOffset += len\n }\n if (op === 'I') {\n mismatches.push({\n start: currOffset,\n type: 'insertion',\n base: `${len}`,\n length: 0,\n })\n seqOffset += len\n } else if (op === 'D') {\n mismatches.push({\n start: currOffset,\n type: 'deletion',\n base: '*',\n length: len,\n })\n } else if (op === 'N') {\n mismatches.push({\n start: currOffset,\n type: 'skip',\n base: 'N',\n length: len,\n })\n } else if (op === 'X') {\n const r = seq.slice(seqOffset, seqOffset + len)\n const q = qual?.slice(seqOffset, seqOffset + len) || []\n\n for (let j = 0; j < len; j++) {\n mismatches.push({\n start: currOffset + j,\n type: 'mismatch',\n base: r[j],\n qual: q[j],\n length: 1,\n })\n }\n seqOffset += len\n } else if (op === 'H') {\n mismatches.push({\n start: currOffset,\n type: 'hardclip',\n base: `H${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (op === 'S') {\n mismatches.push({\n start: currOffset,\n type: 'softclip',\n base: `S${len}`,\n cliplen: len,\n length: 1,\n })\n seqOffset += len\n }\n\n if (op !== 'I' && op !== 'S' && op !== 'H') {\n currOffset += len\n }\n }\n return mismatches\n}\n\n/**\n * parse a SAM MD tag to find mismatching bases of the template versus the reference\n * @returns array of mismatches and their positions\n */\nexport function mdToMismatches(\n mdstring: string,\n cigarOps: string[],\n cigarMismatches: Mismatch[],\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n const mismatchRecords: Mismatch[] = []\n let curr: Mismatch = { start: 0, base: '', length: 0, type: 'mismatch' }\n const skips = cigarMismatches.filter(cigar => cigar.type === 'skip')\n let lastCigar = 0\n let lastTemplateOffset = 0\n let lastRefOffset = 0\n let lastSkipPos = 0\n\n // convert a position on the reference sequence to a position\n // on the template sequence, taking into account hard and soft\n // clipping of reads\n\n function nextRecord(): void {\n mismatchRecords.push(curr)\n\n // get a new mismatch record ready\n curr = {\n start: curr.start + curr.length,\n length: 0,\n base: '',\n type: 'mismatch',\n }\n }\n\n function getTemplateCoordLocal(refCoord: number): number {\n let templateOffset = lastTemplateOffset\n let refOffset = lastRefOffset\n for (\n let i = lastCigar;\n i < cigarOps.length && refOffset <= refCoord;\n i += 2, lastCigar = i\n ) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n templateOffset += len\n } else if (op === 'D' || op === 'P' || op === 'N') {\n refOffset += len\n } else if (op !== 'H') {\n templateOffset += len\n refOffset += len\n }\n }\n lastTemplateOffset = templateOffset\n lastRefOffset = refOffset\n\n return templateOffset - (refOffset - refCoord)\n }\n\n // now actually parse the MD string\n const md = mdstring.match(/(\\d+|\\^[a-z]+|[a-z])/gi) || []\n for (let i = 0; i < md.length; i++) {\n const token = md[i]\n const num = +token\n if (!Number.isNaN(num)) {\n curr.start += num\n } else if (token.startsWith('^')) {\n curr.length = token.length - 1\n curr.base = '*'\n curr.type = 'deletion'\n curr.seq = token.substring(1)\n nextRecord()\n } else {\n // mismatch\n for (let j = 0; j < token.length; j += 1) {\n curr.length = 1\n\n while (lastSkipPos < skips.length) {\n const mismatch = skips[lastSkipPos]\n if (curr.start >= mismatch.start) {\n curr.start += mismatch.length\n lastSkipPos++\n } else {\n break\n }\n }\n const s = cigarOps ? getTemplateCoordLocal(curr.start) : curr.start\n curr.base = seq ? seq.substr(s, 1) : 'X'\n const qualScore = qual?.slice(s, s + 1)[0]\n if (qualScore) {\n curr.qual = qualScore\n }\n curr.altbase = token\n nextRecord()\n }\n }\n }\n return mismatchRecords\n}\n\nexport function getTemplateCoord(refCoord: number, cigarOps: string[]): number {\n let templateOffset = 0\n let refOffset = 0\n for (let i = 0; i < cigarOps.length && refOffset <= refCoord; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n templateOffset += len\n } else if (op === 'D' || op === 'P') {\n refOffset += len\n } else if (op !== 'H') {\n templateOffset += len\n refOffset += len\n }\n }\n return templateOffset - (refOffset - refCoord)\n}\n\nexport function getMismatches(\n cigarString: string,\n mdString: string,\n seq: string,\n qual?: Buffer,\n): Mismatch[] {\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(cigarToMismatches(cigarOps, seq, qual))\n }\n\n // now let's look for CRAM or MD mismatches\n if (mdString) {\n mismatches = mismatches.concat(\n mdToMismatches(mdString, cigarOps, mismatches, seq, qual),\n )\n }\n\n // uniqify the mismatches\n const seen: { [index: string]: boolean } = {}\n return mismatches.filter(m => {\n const key = `${m.type},${m.start},${m.length}`\n const s = seen[key]\n seen[key] = true\n return !s\n })\n}\n\n// adapted from minimap2 code static void write_MD_core function\nexport function generateMD(target: string, query: string, cigar: string) {\n let queryOffset = 0\n let targetOffset = 0\n let lengthMD = 0\n if (!target) {\n console.warn('no ref supplied to generateMD')\n return ''\n }\n const cigarOps = parseCigar(cigar)\n let str = ''\n for (let i = 0; i < cigarOps.length; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'M' || op === 'X' || op === '=') {\n for (let j = 0; j < len; j++) {\n if (\n query[queryOffset + j].toLowerCase() !==\n target[targetOffset + j].toLowerCase()\n ) {\n str += `${lengthMD}${target[targetOffset + j].toUpperCase()}`\n lengthMD = 0\n } else {\n lengthMD++\n }\n }\n queryOffset += len\n targetOffset += len\n } else if (op === 'I') {\n queryOffset += len\n } else if (op === 'D') {\n let tmp = ''\n for (let j = 0; j < len; j++) {\n tmp += target[targetOffset + j].toUpperCase()\n }\n str += `${lengthMD}^${tmp}`\n lengthMD = 0\n targetOffset += len\n } else if (op === 'N') {\n targetOffset += len\n } else if (op === 'S') {\n queryOffset += len\n }\n }\n if (lengthMD > 0) {\n str += lengthMD\n }\n return str\n}\n\n// get relative reference sequence positions for positions given relative to\n// the read sequence\nexport function* getNextRefPos(cigarOps: string[], positions: number[]) {\n let cigarIdx = 0\n let readPos = 0\n let refPos = 0\n\n for (let i = 0; i < positions.length; i++) {\n const pos = positions[i]\n for (; cigarIdx < cigarOps.length && readPos < pos; cigarIdx += 2) {\n const len = +cigarOps[cigarIdx]\n const op = cigarOps[cigarIdx + 1]\n if (op === 'S' || op === 'I') {\n readPos += len\n } else if (op === 'D' || op === 'N') {\n refPos += len\n } else if (op === 'M' || op === 'X' || op === '=') {\n readPos += len\n refPos += len\n }\n }\n\n yield positions[i] - readPos + refPos\n }\n}\n\nexport function getModificationPositions(\n mm: string,\n fseq: string,\n fstrand: number,\n) {\n const seq = fstrand === -1 ? revcom(fseq) : fseq\n return mm\n .split(';')\n .filter(mod => !!mod)\n .map(mod => {\n const [basemod, ...skips] = mod.split(',')\n\n // regexes based on parse_mm.pl from hts-specs\n const matches = basemod.match(/([A-Z])([-+])([^,.?]+)([.?])?/)\n if (!matches) {\n throw new Error('bad format for MM tag')\n }\n const [, base, strand, typestr] = matches\n\n // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n const types = typestr.split(/(\\d+|.)/).filter(f => !!f)\n\n if (strand === '-') {\n console.warn('unsupported negative strand modifications')\n // make sure to return a somewhat matching type even in this case\n return { type: 'unsupported', positions: [] }\n }\n\n // this logic also based on parse_mm.pl from hts-specs is that in the\n // sequence of the read, if we have a modification type e.g. C+m;2 and a\n // sequence ACGTACGTAC we skip the two instances of C and go to the last\n // C\n return types.map(type => {\n let i = 0\n return {\n type,\n positions: skips\n .map(score => +score)\n .map(delta => {\n do {\n if (base === 'N' || base === seq[i]) {\n delta--\n }\n i++\n } while (delta >= 0 && i < seq.length)\n const temp = i - 1\n return fstrand === -1 ? seq.length - 1 - temp : temp\n })\n .sort((a, b) => a - b),\n }\n })\n })\n .flat()\n}\n\nexport function getModificationTypes(mm: string) {\n const mods = mm.split(';')\n return mods\n .filter(mod => !!mod)\n .map(mod => {\n const [basemod] = mod.split(',')\n\n const matches = basemod.match(/([A-Z])([-+])([^,]+)/)\n if (!matches) {\n throw new Error('bad format for MM tag')\n }\n const [, , , typestr] = matches\n\n // can be a multi e.g. C+mh for both meth (m) and hydroxymeth (h) so\n // split, and they can also be chemical codes (ChEBI) e.g. C+16061\n return typestr.split(/(\\d+|.)/).filter(f => !!f)\n })\n .flat()\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default (pluginManager: PluginManager) => {\n return types.late(() =>\n ConfigurationSchema(\n 'CramAdapter',\n {\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 3_000_000,\n },\n cramLocation: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.cram',\n locationType: 'UriLocation',\n },\n },\n craiLocation: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.cram.crai',\n locationType: 'UriLocation',\n },\n },\n sequenceAdapter: pluginManager.pluggableConfigSchemaType('adapter'),\n },\n { explicitlyTyped: true },\n ),\n )\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\n// locals\nimport configSchemaF from './configSchema'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'CramAdapter',\n configSchema: pluginManager.load(configSchemaF),\n getAdapterClass: () => import('./CramAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default types.late(() =>\n ConfigurationSchema(\n 'BamAdapter',\n {\n bamLocation: {\n type: 'fileLocation',\n defaultValue: { uri: '/path/to/my.bam', locationType: 'UriLocation' },\n },\n index: ConfigurationSchema('BamIndex', {\n indexType: {\n model: types.enumeration('IndexType', ['BAI', 'CSI']),\n type: 'stringEnum',\n defaultValue: 'BAI',\n },\n location: {\n type: 'fileLocation',\n defaultValue: {\n uri: '/path/to/my.bam.bai',\n locationType: 'UriLocation',\n },\n },\n }),\n chunkSizeLimit: {\n type: 'number',\n defaultValue: 100_000_000,\n },\n fetchSizeLimit: {\n type: 'number',\n defaultValue: 5_000_000,\n },\n sequenceAdapter: {\n type: 'frozen',\n defaultValue: null,\n },\n },\n { explicitlyTyped: true },\n ),\n)\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchema from './configSchema'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'BamAdapter',\n configSchema,\n getAdapterClass: () => import('./BamAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default types.late(() =>\n ConfigurationSchema(\n 'HtsgetBamAdapter',\n {\n htsgetBase: {\n type: 'string',\n defaultValue: '',\n },\n htsgetTrackId: {\n type: 'string',\n defaultValue: '',\n },\n sequenceAdapter: {\n type: 'frozen',\n defaultValue: null,\n },\n },\n { explicitlyTyped: true },\n ),\n)\n","import configSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'HtsgetBamAdapter',\n adapterMetadata: {\n category: null,\n hiddenFromGUI: true,\n displayName: null,\n description: null,\n },\n configSchema,\n getAdapterClass: () =>\n import('./HtsgetBamAdapter').then(r => r.default),\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { types } from 'mobx-state-tree'\n\nexport default (pluginManager: PluginManager) =>\n types.late(() =>\n ConfigurationSchema(\n 'SNPCoverageAdapter',\n {\n subadapter: pluginManager.pluggableConfigSchemaType('adapter'),\n },\n { explicitlyTyped: true },\n ),\n )\n","import { Feature } from '@jbrowse/core/util/simpleFeature'\n// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and\n// BAM does not\nexport function getTag(feature: Feature, tag: string) {\n const tags = feature.get('tags')\n return tags ? tags[tag] : feature.get(tag)\n}\n\n// use fallback alt tag, used in situations where upper case/lower case tags\n// exist e.g. Mm/MM for base modifications\nexport function getTagAlt(feature: Feature, tag: string, alt: string) {\n return getTag(feature, tag) || getTag(feature, alt)\n}\n\n// orientation definitions from igv.js, see also\n// https://software.broadinstitute.org/software/igv/interpreting_pair_orientations\nexport const orientationTypes = {\n fr: {\n F1R2: 'LR',\n F2R1: 'LR',\n\n F1F2: 'LL',\n F2F1: 'LL',\n\n R1R2: 'RR',\n R2R1: 'RR',\n\n R1F2: 'RL',\n R2F1: 'RL',\n } as { [key: string]: string },\n\n rf: {\n R1F2: 'LR',\n R2F1: 'LR',\n\n R1R2: 'LL',\n R2R1: 'LL',\n\n F1F2: 'RR',\n F2F1: 'RR',\n\n F1R2: 'RL',\n F2R1: 'RL',\n } as { [key: string]: string },\n\n ff: {\n F2F1: 'LR',\n R1R2: 'LR',\n\n F2R1: 'LL',\n R1F2: 'LL',\n\n R2F1: 'RR',\n F1R2: 'RR',\n\n R2R1: 'RL',\n F1F2: 'RL',\n } as { [key: string]: string },\n}\n\nexport function getColorWGBS(strand: number, base: string) {\n if (strand === 1) {\n if (base === 'C') {\n return '#f00'\n }\n if (base === 'T') {\n return '#00f'\n }\n } else if (strand === -1) {\n if (base === 'G') {\n return '#f00'\n }\n if (base === 'A') {\n return '#00f'\n }\n }\n return '#888'\n}\n","import {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { AugmentedRegion as Region } from '@jbrowse/core/util/types'\nimport SimpleFeature, { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { reduce, filter, toArray } from 'rxjs/operators'\nimport { Observable } from 'rxjs'\nimport { getTag, getTagAlt } from '../util'\nimport {\n parseCigar,\n getNextRefPos,\n getModificationPositions,\n Mismatch,\n} from '../BamAdapter/MismatchParser'\n\ninterface SNPCoverageOptions extends BaseOptions {\n filters?: SerializableFilterChain\n}\n\nfunction mismatchLen(mismatch: Mismatch) {\n return !isInterbase(mismatch.type) ? mismatch.length : 1\n}\n\nfunction isInterbase(type: string) {\n return type === 'softclip' || type === 'hardclip' || type === 'insertion'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction inc(bin: any, strand: number, type: string, field: string) {\n if (!bin[type][field]) {\n bin[type][field] = { total: 0, strands: { '-1': 0, '0': 0, '1': 0 } }\n }\n bin[type][field].total++\n bin[type][field].strands[strand]++\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dec(bin: any, strand: number, type: string, field: string) {\n if (!bin[type][field]) {\n bin[type][field] = { total: 0, strands: { '-1': 0, '0': 0, '1': 0 } }\n }\n bin[type][field].total--\n bin[type][field].strands[strand]--\n}\n\nexport default class SNPCoverageAdapter extends BaseFeatureDataAdapter {\n protected async configure() {\n const subadapterConfig = readConfObject(this.config, 'subadapter')\n const sequenceConf = readConfObject(this.config, [\n 'subadapter',\n 'sequenceAdapter',\n ])\n const dataAdapter = await this.getSubAdapter?.(subadapterConfig)\n\n const sequenceAdapter = sequenceConf\n ? await this.getSubAdapter?.(sequenceConf)\n : undefined\n\n if (!dataAdapter) {\n throw new Error('Failed to get subadapter')\n }\n\n return {\n subadapter: dataAdapter.dataAdapter as BaseFeatureDataAdapter,\n sequenceAdapter: sequenceAdapter?.dataAdapter as\n | BaseFeatureDataAdapter\n | undefined,\n }\n }\n\n getFeatures(region: Region, opts: SNPCoverageOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n const { subadapter } = await this.configure()\n let stream = subadapter.getFeatures(region, opts)\n\n if (opts.filters) {\n const { filters } = opts\n stream = stream.pipe(filter(f => filters.passes(f, opts)))\n }\n\n const { bins, skipmap } = await this.generateCoverageBins(\n stream,\n region,\n opts,\n )\n\n bins.forEach((bin, index) => {\n observer.next(\n new SimpleFeature({\n id: `${this.id}-${region.start}-${index}`,\n data: {\n score: bin.total,\n snpinfo: bin,\n start: region.start + index,\n end: region.start + index + 1,\n refName: region.refName,\n },\n }),\n )\n })\n\n // make fake features from the coverage\n Object.entries(skipmap).forEach(([key, skip]) => {\n observer.next(\n new SimpleFeature({\n id: key,\n data: {\n type: 'skip',\n start: skip.start,\n end: skip.end,\n strand: skip.strand,\n score: skip.score,\n xs: skip.xs,\n },\n }),\n )\n })\n\n observer.complete()\n }, opts.signal)\n }\n\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const { subadapter } = await this.configure()\n return subadapter.estimateRegionsStats(regions, opts)\n }\n\n async getRefNames(opts: BaseOptions = {}) {\n const { subadapter } = await this.configure()\n return subadapter.getRefNames(opts)\n }\n\n freeResources(/* { region } */): void {}\n\n /**\n * Generates coverage bins from features which details\n * the reference, mismatches, strands, and coverage info\n * @param features - Features of region to be passed in\n * @param region - Region\n * @param bpPerPx - base pairs per pixel\n * @returns Array of nested frequency tables\n */\n async generateCoverageBins(\n features: Observable<Feature>,\n region: Region,\n opts: { bpPerPx?: number; colorBy?: { type: string; tag?: string } },\n ) {\n const { colorBy } = opts\n const { sequenceAdapter } = await this.configure()\n const { originalRefName, refName, start, end } = region\n const binMax = Math.ceil(region.end - region.start)\n\n const skipmap = {} as {\n [key: string]: {\n score: number\n feature: unknown\n start: number\n end: number\n strand: number\n xs: string\n }\n }\n\n // bins contain cov feature if they contribute to coverage, or noncov which\n // are interbase or other features that don't contribute to coverage.\n // delskips are elements that don't contribute to coverage, but should be\n // reported also (and are not interbase)\n type BinType = { total: number; strands: { [key: string]: number } }\n\n // request an extra +1 on the end to get CpG crossing region boundary\n let regionSeq: string | undefined\n\n if (sequenceAdapter) {\n const [feat] = await sequenceAdapter\n .getFeatures({\n refName: originalRefName || refName,\n start,\n end: end + 1,\n assemblyName: region.assemblyName,\n })\n .pipe(toArray())\n .toPromise()\n regionSeq = feat?.get('seq')\n }\n\n const bins = await features\n .pipe(\n reduce(\n (bins, feature) => {\n const cigar = feature.get('CIGAR')\n const fstart = feature.get('start')\n const fend = feature.get('end')\n const fstrand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n\n for (let j = fstart; j < fend + 1; j++) {\n const i = j - region.start\n if (i >= 0 && i < binMax) {\n const bin = bins[i] || {\n total: 0,\n lowqual: {} as BinType,\n cov: {} as BinType,\n delskips: {} as BinType,\n noncov: {} as BinType,\n ref: {} as BinType,\n }\n if (j !== fend) {\n bin.total++\n inc(bin, fstrand, 'ref', 'ref')\n }\n bins[i] = bin\n }\n }\n\n if (colorBy?.type === 'modifications') {\n const seq = feature.get('seq')\n const mm = getTagAlt(feature, 'MM', 'Mm') || ''\n\n const ml =\n (getTagAlt(feature, 'ML', 'Ml') as number[] | string) || []\n\n const probabilities = ml\n ? (typeof ml === 'string'\n ? ml.split(',').map(e => +e)\n : ml\n ).map(e => e / 255)\n : (getTagAlt(feature, 'MP', 'Mp') as string)\n .split('')\n .map(s => s.charCodeAt(0) - 33)\n .map(elt => Math.min(1, elt / 50))\n\n let probIndex = 0\n getModificationPositions(mm, seq, fstrand).forEach(\n ({ type, positions }) => {\n const mod = `mod_${type}`\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - region.start\n if (\n epos >= 0 &&\n epos < bins.length &&\n pos + fstart < fend\n ) {\n const bin = bins[epos] || {\n total: 0,\n lowqual: {} as BinType,\n cov: {} as BinType,\n delskips: {} as BinType,\n noncov: {} as BinType,\n ref: {} as BinType,\n }\n\n if (probabilities[probIndex] > 0.5) {\n inc(bin, fstrand, 'cov', mod)\n } else {\n inc(bin, fstrand, 'lowqual', mod)\n }\n }\n probIndex++\n }\n },\n )\n }\n\n // methylation based coloring takes into account both reference\n // sequence CpG detection and reads\n else if (colorBy?.type === 'methylation') {\n if (!regionSeq) {\n throw new Error(\n 'no region sequence detected, need sequenceAdapter configuration',\n )\n }\n const seq = feature.get('seq')\n const mm = getTagAlt(feature, 'MM', 'Mm') || ''\n const methBins = new Array(region.end - region.start).fill(0)\n\n getModificationPositions(mm, seq, fstrand).forEach(\n ({ type, positions }) => {\n // we are processing methylation\n if (type === 'm') {\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - region.start\n if (epos >= 0 && epos < methBins.length) {\n methBins[epos] = 1\n }\n }\n }\n },\n )\n\n for (let j = fstart; j < fend; j++) {\n const i = j - region.start\n if (i >= 0 && i < bins.length - 1) {\n const l1 = regionSeq[i].toLowerCase()\n const l2 = regionSeq[i + 1].toLowerCase()\n const bin = bins[i]\n const bin1 = bins[i + 1]\n\n // color\n if (l1 === 'c' && l2 === 'g') {\n if (methBins[i] || methBins[i + 1]) {\n inc(bin, fstrand, 'cov', 'meth')\n inc(bin1, fstrand, 'cov', 'meth')\n dec(bin, fstrand, 'ref', 'ref')\n dec(bin1, fstrand, 'ref', 'ref')\n } else {\n inc(bin, fstrand, 'cov', 'unmeth')\n inc(bin1, fstrand, 'cov', 'unmeth')\n dec(bin, fstrand, 'ref', 'ref')\n dec(bin1, fstrand, 'ref', 'ref')\n }\n }\n }\n }\n }\n\n // normal SNP based coloring\n else {\n const mismatches = feature.get('mismatches') as\n | Mismatch[]\n | undefined\n\n if (mismatches) {\n for (let i = 0; i < mismatches.length; i++) {\n const mismatch = mismatches[i]\n const ms = fstart + mismatch.start\n for (let j = ms; j < ms + mismatchLen(mismatch); j++) {\n const epos = j - region.start\n if (epos >= 0 && epos < bins.length) {\n const bin = bins[epos]\n const { base, type } = mismatch\n const interbase = isInterbase(type)\n if (!interbase) {\n dec(bin, fstrand, 'ref', 'ref')\n } else {\n inc(bin, fstrand, 'noncov', type)\n }\n\n if (type === 'deletion' || type === 'skip') {\n inc(bin, fstrand, 'delskips', type)\n bin.total--\n } else if (!interbase) {\n inc(bin, fstrand, 'cov', base)\n }\n }\n }\n }\n\n mismatches\n .filter(mismatch => mismatch.type === 'skip')\n .forEach(mismatch => {\n const mstart = feature.get('start') + mismatch.start\n const start = mstart\n const end = mstart + mismatch.length\n const strand = feature.get('strand')\n const hash = `${start}_${end}_${strand}`\n if (!skipmap[hash]) {\n skipmap[hash] = {\n feature: feature,\n start,\n end,\n strand,\n xs: getTag(feature, 'XS') || getTag(feature, 'TS'),\n score: 1,\n }\n } else {\n skipmap[hash].score++\n }\n })\n }\n }\n\n return bins\n },\n [] as {\n total: number\n lowqual: BinType\n cov: BinType\n delskips: BinType\n noncov: BinType\n ref: BinType\n }[],\n ),\n )\n .toPromise()\n\n return { bins, skipmap }\n }\n}\n\nconst { capabilities } = SNPCoverageAdapter\nexport { capabilities }\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'\nimport configSchemaFactory from './configSchema'\nimport { capabilities } from './SNPCoverageAdapter'\n\nexport default (pluginManager: PluginManager) => {\n pluginManager.addAdapterType(\n () =>\n new AdapterType({\n name: 'SNPCoverageAdapter',\n adapterMetadata: {\n category: null,\n displayName: null,\n hiddenFromGUI: true,\n description: null,\n },\n getAdapterClass: () =>\n import('./SNPCoverageAdapter').then(r => r.default),\n configSchema: configSchemaFactory(pluginManager),\n adapterCapabilities: capabilities,\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\n\nexport default ConfigurationSchema(\n 'SNPCoverageRenderer',\n {\n clipColor: {\n type: 'color',\n description: 'the color of the clipping marker',\n defaultValue: 'red',\n },\n indicatorThreshold: {\n type: 'number',\n description:\n 'the proportion of reads containing a insertion/clip indicator',\n defaultValue: 0.4,\n },\n drawArcs: {\n type: 'boolean',\n description: 'Draw sashimi-style arcs for intron features',\n defaultValue: true,\n },\n drawInterbaseCounts: {\n type: 'boolean',\n description:\n 'draw count \"upsidedown histogram\" of the interbase events that don\\'t contribute to the coverage count so are not drawn in the normal histogram',\n defaultValue: true,\n },\n drawIndicators: {\n type: 'boolean',\n description:\n 'draw a triangular indicator where an event has been detected',\n defaultValue: true,\n },\n },\n { explicitlyTyped: true },\n)\n","import { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { featureSpanPx, bpSpanPx } from '@jbrowse/core/util'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'\nimport {\n getOrigin,\n getScale,\n ScaleOpts,\n WiggleBaseRenderer,\n YSCALEBAR_LABEL_OFFSET,\n} from '@jbrowse/plugin-wiggle'\n\nexport interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {\n bpPerPx: number\n height: number\n highResolutionScaling: number\n scaleOpts: ScaleOpts\n}\n\nexport interface RenderArgsDeserializedWithFeatures\n extends RenderArgsDeserialized {\n features: Map<string, Feature>\n ticks: { values: number[] }\n displayCrossHatches: boolean\n modificationTagMap?: Record<string, string>\n}\n\ntype Counts = {\n [key: string]: { total: number; strands: { [key: string]: number } }\n}\n\ninterface SNPInfo {\n cov: Counts\n noncov: Counts\n total: number\n}\n\nexport default class SNPCoverageRenderer extends WiggleBaseRenderer {\n // note: the snps are drawn on linear scale even if the data is drawn in log\n // scape hence the two different scales being used\n draw(\n ctx: CanvasRenderingContext2D,\n props: RenderArgsDeserializedWithFeatures,\n ) {\n const {\n features,\n regions,\n bpPerPx,\n displayCrossHatches,\n modificationTagMap = {},\n scaleOpts,\n height: unadjustedHeight,\n theme: configTheme,\n config: cfg,\n ticks,\n } = props\n const theme = createJBrowseTheme(configTheme)\n const [region] = regions\n const width = (region.end - region.start) / bpPerPx\n\n // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the\n // wiggle display, and makes the height of the actual drawn area add\n // \"padding\" to the top and bottom of the display\n const offset = YSCALEBAR_LABEL_OFFSET\n const height = unadjustedHeight - offset * 2\n\n const { domain } = scaleOpts\n if (!domain) {\n return\n }\n const opts = { ...scaleOpts, range: [0, height] }\n const viewScale = getScale(opts)\n const snpViewScale = getScale({\n ...opts,\n range: [0, height],\n scaleType: 'linear',\n })\n // clipping and insertion indicators, uses a smaller height/2 scale\n const indicatorViewScale = getScale({\n ...opts,\n range: [0, height / 2],\n scaleType: 'linear',\n })\n const originY = getOrigin(scaleOpts.scaleType)\n const snpOriginY = getOrigin('linear')\n\n const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold')\n const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts')\n const drawArcs = readConfObject(cfg, 'drawArcs')\n const drawIndicators = readConfObject(cfg, 'drawIndicators')\n\n // get the y coordinate that we are plotting at, this can be log scale\n const toY = (n: number) => height - (viewScale(n) || 0) + offset\n const toHeight = (n: number) => toY(originY) - toY(n)\n\n // this is always linear scale, even when plotted on top of log scale\n const snpToY = (n: number) => height - (snpViewScale(n) || 0) + offset\n const indicatorToY = (n: number) =>\n height - (indicatorViewScale(n) || 0) + offset\n const snpToHeight = (n: number) => snpToY(snpOriginY) - snpToY(n)\n const indicatorToHeight = (n: number) =>\n indicatorToY(snpOriginY) - indicatorToY(n)\n\n const colorForBase: { [key: string]: string } = {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n total: 'lightgrey',\n insertion: 'purple',\n softclip: 'blue',\n hardclip: 'red',\n meth: 'red',\n unmeth: 'blue',\n ref: 'lightgrey',\n }\n\n const feats = [...features.values()]\n const coverage = feats.filter(f => f.get('type') !== 'skip')\n const skips = feats.filter(f => f.get('type') === 'skip')\n\n // Use two pass rendering, which helps in visualizing the SNPs at higher\n // bpPerPx First pass: draw the gray background\n ctx.fillStyle = colorForBase.total\n for (let i = 0; i < coverage.length; i++) {\n const feature = coverage[i]\n const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n const w = rightPx - leftPx + 0.3\n const score = feature.get('score') as number\n ctx.fillRect(leftPx, toY(score), w, toHeight(score))\n }\n\n // Keep track of previous total which we will use it to draw the interbase\n // indicator (if there is a sudden clip, there will be no read coverage but\n // there will be \"clip\" coverage) at that position beyond the read. if the\n // clip is right at a block boundary then prevTotal will not be available,\n // so this is a best attempt to plot interbase indicator at the \"cliffs\"\n let prevTotal = 0\n\n // extraHorizontallyFlippedOffset is used to draw interbase items, which\n // are located to the left when forward and right when reversed\n const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0\n\n // Second pass: draw the SNP data, and add a minimum feature width of 1px\n // which can be wider than the actual bpPerPx This reduces overdrawing of\n // the grey background over the SNPs\n\n for (let i = 0; i < coverage.length; i++) {\n const feature = coverage[i]\n const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)\n\n const snpinfo = feature.get('snpinfo') as SNPInfo\n const w = Math.max(rightPx - leftPx + 0.3, 1)\n const totalScore = snpinfo.total\n const keys = Object.keys(snpinfo.cov).sort()\n\n let curr = 0\n for (let i = 0; i < keys.length; i++) {\n const base = keys[i]\n const { total } = snpinfo.cov[base]\n ctx.fillStyle =\n colorForBase[base] ||\n modificationTagMap[base.replace('mod_', '')] ||\n '#888'\n ctx.fillRect(leftPx, snpToY(total + curr), w, snpToHeight(total))\n curr += total\n }\n\n const interbaseEvents = Object.keys(snpinfo.noncov)\n const indicatorHeight = 4.5\n if (drawInterbaseCounts) {\n let curr = 0\n for (let i = 0; i < interbaseEvents.length; i++) {\n const base = interbaseEvents[i]\n const { total } = snpinfo.noncov[base]\n ctx.fillStyle = colorForBase[base]\n ctx.fillRect(\n leftPx - 0.6 + extraHorizontallyFlippedOffset,\n indicatorHeight + indicatorToHeight(curr),\n 1.2,\n indicatorToHeight(total),\n )\n curr += total\n }\n }\n\n if (drawIndicators) {\n let accum = 0\n let max = 0\n let maxBase = ''\n for (let i = 0; i < interbaseEvents.length; i++) {\n const base = interbaseEvents[i]\n const { total } = snpinfo.noncov[base]\n accum += total\n if (total > max) {\n max = total\n maxBase = base\n }\n }\n\n // avoid drawing a bunch of indicators if coverage is very low e.g.\n // less than 7, uses the prev total in the case of the \"cliff\"\n const indicatorComparatorScore = Math.max(totalScore, prevTotal)\n if (\n accum > indicatorComparatorScore * indicatorThreshold &&\n indicatorComparatorScore > 7\n ) {\n ctx.fillStyle = colorForBase[maxBase]\n ctx.beginPath()\n const l = leftPx + extraHorizontallyFlippedOffset\n ctx.moveTo(l - 3.5, 0)\n ctx.lineTo(l + 3.5, 0)\n ctx.lineTo(l, indicatorHeight)\n ctx.fill()\n }\n }\n prevTotal = totalScore\n }\n\n if (drawArcs) {\n for (let i = 0; i < skips.length; i++) {\n const f = skips[i]\n const [left, right] = bpSpanPx(\n f.get('start'),\n f.get('end'),\n region,\n bpPerPx,\n )\n\n ctx.beginPath()\n const str = f.get('strand') as number\n const xs = f.get('xs') as string\n const pos = 'rgba(255,200,200,0.7)'\n const neg = 'rgba(200,200,255,0.7)'\n const neutral = 'rgba(200,200,200,0.7)'\n\n if (xs === '+') {\n ctx.strokeStyle = pos\n } else if (xs === '-') {\n ctx.strokeStyle = neg\n } else if (str === 1) {\n ctx.strokeStyle = pos\n } else if (str === -1) {\n ctx.strokeStyle = neg\n } else {\n ctx.strokeStyle = neutral\n }\n\n ctx.lineWidth = Math.log(f.get('score') + 1)\n ctx.moveTo(left, height - offset * 2)\n ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2)\n ctx.stroke()\n }\n }\n\n if (displayCrossHatches) {\n ctx.lineWidth = 1\n ctx.strokeStyle = 'rgba(140,140,140,0.8)'\n ticks.values.forEach(tick => {\n ctx.beginPath()\n ctx.moveTo(0, Math.round(toY(tick)))\n ctx.lineTo(width, Math.round(toY(tick)))\n ctx.stroke()\n })\n }\n }\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport ConfigSchema from './configSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport SNPCoverageRenderer from './SNPCoverageRenderer'\n\nimport { WiggleRendering } from '@jbrowse/plugin-wiggle'\n\nexport const configSchema = ConfigurationSchema(\n 'SNPCoverageRenderer',\n {},\n { baseConfiguration: ConfigSchema, explicitlyTyped: true },\n)\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addRendererType(\n () =>\n new SNPCoverageRenderer({\n name: 'SNPCoverageRenderer',\n ReactComponent: WiggleRendering,\n configSchema,\n pluginManager,\n }),\n )\n}\n","import { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { doesIntersect2 } from '@jbrowse/core/util/range'\nimport { Mismatch } from '../BamAdapter/MismatchParser'\n\ninterface SortObject {\n pos: number\n type: string\n tag?: string\n}\nexport const sortFeature = (\n features: Map<string, Feature>,\n sortedBy: SortObject,\n) => {\n const featureArray = Array.from(features.values())\n const featuresInCenterLine: Feature[] = []\n const featuresOutsideCenter: Feature[] = []\n const { pos, type } = sortedBy\n\n // only sort on features that intersect center line, append those outside post-sort\n featureArray.forEach(innerArray => {\n const feature = innerArray\n const start = feature.get('start')\n const end = feature.get('end')\n if (doesIntersect2(pos - 1, pos, start, end)) {\n featuresInCenterLine.push(innerArray)\n } else {\n featuresOutsideCenter.push(innerArray)\n }\n })\n\n const isCram = featureArray.length ? featureArray[0].get('tags') : false\n switch (type) {\n case 'Start location': {\n featuresInCenterLine.sort((a, b) => a.get('start') - b.get('start'))\n break\n }\n\n case 'tag': {\n const tag = sortedBy.tag as string\n const getTag = (f: Feature, t: string) => {\n return isCram ? f.get('tags')[t] : f.get(t)\n }\n const isString =\n featuresInCenterLine[0] &&\n typeof getTag(featuresInCenterLine[0], tag) === 'string'\n if (isString) {\n featuresInCenterLine.sort((a, b) =>\n getTag(b, tag).localeCompare(getTag(a, tag)),\n )\n } else {\n featuresInCenterLine.sort(\n (a, b) => (getTag(b, tag) || 0) - (getTag(a, tag) || 0),\n )\n }\n break\n }\n\n // first sort all mismatches, then all reference bases at the end\n case 'Base pair': {\n const baseSortArray: [string, Mismatch][] = []\n featuresInCenterLine.forEach(feature => {\n const mismatches: Mismatch[] = feature.get('mismatches')\n mismatches.forEach(mismatch => {\n const start = feature.get('start')\n const offset = start + mismatch.start + 1\n const consuming =\n mismatch.type === 'insertion' || mismatch.type === 'softclip'\n const len = consuming ? 0 : mismatch.length\n if (pos >= offset && pos < offset + len) {\n baseSortArray.push([feature.id(), mismatch])\n }\n })\n })\n\n const baseMap = new Map(baseSortArray)\n featuresInCenterLine.sort((a, b) => {\n const aMismatch = baseMap.get(a.id())\n const bMismatch = baseMap.get(b.id())\n const acode = bMismatch && bMismatch.base.toUpperCase()\n const bcode = aMismatch && aMismatch.base.toUpperCase()\n if (acode === bcode && acode === '*') {\n // @ts-ignore\n return aMismatch.length - bMismatch.length\n }\n return (\n (acode ? acode.charCodeAt(0) : 0) - (bcode ? bcode.charCodeAt(0) : 0)\n )\n })\n\n break\n }\n\n // sorts positive strands then negative strands\n case 'Read strand': {\n featuresInCenterLine.sort((a, b) =>\n a.get('strand') <= b.get('strand') ? 1 : -1,\n )\n break\n }\n }\n\n const sortedMap = new Map(\n featuresInCenterLine\n .concat(featuresOutsideCenter)\n .map(feature => [feature.id(), feature]),\n )\n\n return sortedMap\n}\n","import deepEqual from 'fast-deep-equal'\nimport { LayoutSession } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport GranularRectLayout from '@jbrowse/core/util/layouts/GranularRectLayout'\nimport MultiLayout from '@jbrowse/core/util/layouts/MultiLayout'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\nexport interface PileupLayoutSessionProps {\n config: AnyConfigurationModel\n bpPerPx: number\n filters: SerializableFilterChain\n sortedBy: unknown\n showSoftClip: unknown\n}\n\ntype MyMultiLayout = MultiLayout<GranularRectLayout<unknown>, unknown>\ninterface CachedPileupLayout {\n layout: MyMultiLayout\n config: AnyConfigurationModel\n filters: SerializableFilterChain\n sortedBy: unknown\n showSoftClip: boolean\n}\n// Sorting and revealing soft clip changes the layout of Pileup renderer\n// Adds extra conditions to see if cached layout is valid\nexport class PileupLayoutSession extends LayoutSession {\n sortedBy: unknown\n\n showSoftClip = false\n\n constructor(args: PileupLayoutSessionProps) {\n super(args)\n this.config = args.config\n }\n\n cachedLayoutIsValid(cachedLayout: CachedPileupLayout) {\n return (\n super.cachedLayoutIsValid(cachedLayout) &&\n this.showSoftClip === cachedLayout.showSoftClip &&\n deepEqual(this.sortedBy, cachedLayout.sortedBy)\n )\n }\n\n cachedLayout: CachedPileupLayout | undefined\n\n get layout(): MyMultiLayout {\n if (!this.cachedLayout || !this.cachedLayoutIsValid(this.cachedLayout)) {\n this.cachedLayout = {\n layout: this.makeLayout(),\n config: readConfObject(this.config),\n filters: this.filters,\n sortedBy: this.sortedBy,\n showSoftClip: this.showSoftClip,\n }\n }\n return this.cachedLayout.layout\n }\n}\n","import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport { toArray } from 'rxjs/operators'\nimport BoxRendererType, {\n RenderArgs,\n RenderArgsSerialized,\n RenderArgsDeserialized as BoxRenderArgsDeserialized,\n RenderResults,\n ResultsSerialized,\n ResultsDeserialized,\n} from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'\nimport { Theme } from '@material-ui/core'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { bpSpanPx, iterMap } from '@jbrowse/core/util'\nimport Color from 'color'\nimport { Region } from '@jbrowse/core/util/types'\nimport { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'\nimport { BaseLayout } from '@jbrowse/core/util/layouts/BaseLayout'\nimport { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport { readConfObject } from '@jbrowse/core/configuration'\n\n// locals\nimport {\n Mismatch,\n parseCigar,\n getModificationPositions,\n getNextRefPos,\n} from '../BamAdapter/MismatchParser'\nimport { sortFeature } from './sortUtil'\nimport { getTagAlt, orientationTypes } from '../util'\nimport {\n PileupLayoutSession,\n PileupLayoutSessionProps,\n} from './PileupLayoutSession'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\n\nfunction getColorBaseMap(theme: Theme) {\n return {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n deletion: '#808080', // gray\n }\n}\n\nexport interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {\n colorBy?: { type: string; tag?: string }\n colorTagMap?: Record<string, string>\n modificationTagMap?: Record<string, string>\n sortedBy?: {\n type: string\n pos: number\n refName: string\n assemblyName: string\n tag?: string\n }\n showSoftClip: boolean\n highResolutionScaling: number\n}\n\nexport interface RenderArgsDeserializedWithFeaturesAndLayout\n extends RenderArgsDeserialized {\n features: Map<string, Feature>\n layout: BaseLayout<Feature>\n regionSequence?: string\n}\n\ninterface LayoutRecord {\n feature: Feature\n leftPx: number\n rightPx: number\n topPx: number\n heightPx: number\n}\n\nconst alignmentColoring: { [key: string]: string } = {\n color_fwd_strand_not_proper: '#ECC8C8',\n color_rev_strand_not_proper: '#BEBED8',\n color_fwd_strand: '#EC8B8B',\n color_rev_strand: '#8F8FD8',\n color_fwd_missing_mate: '#D11919',\n color_rev_missing_mate: '#1919D1',\n color_fwd_diff_chr: '#000',\n color_rev_diff_chr: '#969696',\n color_pair_lr: '#c8c8c8',\n color_pair_rr: 'navy',\n color_pair_rl: 'teal',\n color_pair_ll: 'green',\n color_nostrand: '#c8c8c8',\n color_interchrom: 'orange',\n color_longinsert: 'red',\n color_shortinsert: 'pink',\n}\n\ninterface LayoutFeature {\n heightPx: number\n topPx: number\n feature: Feature\n}\n\nfunction shouldDrawMismatches(type?: string) {\n return !['methylation', 'modifications'].includes(type || '')\n}\n\nexport default class PileupRenderer extends BoxRendererType {\n supportsSVG = true\n\n // get width and height of chars the height is an approximation: width\n // letter M is approximately the height\n getCharWidthHeight(ctx: CanvasRenderingContext2D) {\n const charWidth = ctx.measureText('A').width\n const charHeight = ctx.measureText('M').width\n return { charWidth, charHeight }\n }\n\n layoutFeature({\n feature,\n layout,\n bpPerPx,\n region,\n showSoftClip,\n heightPx,\n displayMode,\n }: {\n feature: Feature\n layout: BaseLayout<Feature>\n bpPerPx: number\n region: Region\n showSoftClip?: boolean\n heightPx: number\n displayMode: string\n }): LayoutRecord | null {\n let expansionBefore = 0\n let expansionAfter = 0\n\n // Expand the start and end of feature when softclipping enabled\n if (showSoftClip) {\n const mismatches = feature.get('mismatches') as Mismatch[]\n const seq = feature.get('seq') as string\n if (seq) {\n for (let i = 0; i < mismatches.length; i += 1) {\n const { type, start, cliplen = 0 } = mismatches[i]\n if (type === 'softclip') {\n start === 0\n ? (expansionBefore = cliplen)\n : (expansionAfter = cliplen)\n }\n }\n }\n }\n\n const [leftPx, rightPx] = bpSpanPx(\n feature.get('start') - expansionBefore,\n feature.get('end') + expansionAfter,\n region,\n bpPerPx,\n )\n\n if (displayMode === 'compact') {\n heightPx /= 3\n }\n if (feature.get('refName') !== region.refName) {\n throw new Error(\n `feature ${feature.id()} is not on the current region's reference sequence ${\n region.refName\n }`,\n )\n }\n const topPx = layout.addRect(\n feature.id(),\n feature.get('start') - expansionBefore,\n feature.get('end') + expansionAfter,\n heightPx,\n )\n if (topPx === null) {\n return null\n }\n\n return {\n feature,\n leftPx,\n rightPx,\n topPx: displayMode === 'collapse' ? 0 : topPx,\n heightPx,\n }\n }\n\n // expands region for clipping to use. possible improvement: use average read\n // size to set the heuristic maxClippingSize expansion (e.g. short reads\n // don't have to expand a softclipping size a lot, but long reads might)\n getExpandedRegion(region: Region, renderArgs: RenderArgsDeserialized) {\n const { config, showSoftClip } = renderArgs\n\n const maxClippingSize = readConfObject(config, 'maxClippingSize')\n const { start, end } = region\n const len = end - start\n const bpExpansion = Math.max(\n len,\n showSoftClip ? Math.round(maxClippingSize) : 0,\n )\n\n return {\n ...region,\n start: Math.floor(Math.max(start - bpExpansion, 0)),\n end: Math.ceil(end + bpExpansion),\n }\n }\n\n colorByOrientation(feature: Feature, config: AnyConfigurationModel) {\n return alignmentColoring[\n this.getOrientation(feature, config) || 'color_nostrand'\n ]\n }\n\n getOrientation(feature: Feature, config: AnyConfigurationModel) {\n const orientationType = readConfObject(config, 'orientationType') as\n | 'fr'\n | 'ff'\n | 'rf'\n const type = orientationTypes[orientationType]\n const orientation = type[feature.get('pair_orientation') as string]\n const map: { [key: string]: string } = {\n LR: 'color_pair_lr',\n RR: 'color_pair_rr',\n RL: 'color_pair_rl',\n LL: 'color_pair_ll',\n }\n return map[orientation]\n }\n\n colorByInsertSize(feature: Feature, _config: AnyConfigurationModel) {\n return feature.get('is_paired') &&\n feature.get('seq_id') !== feature.get('next_seq_id')\n ? '#555'\n : `hsl(${Math.abs(feature.get('template_length')) / 10},50%,50%)`\n }\n\n colorByStranded(feature: Feature, _config: AnyConfigurationModel) {\n const flags = feature.get('flags')\n const strand = feature.get('strand')\n // is paired\n if (flags & 1) {\n const revflag = flags & 64\n const flipper = revflag ? -1 : 1\n // proper pairing\n if (flags & 2) {\n return strand * flipper === 1 ? 'color_rev_strand' : 'color_fwd_strand'\n }\n if (feature.get('multi_segment_next_segment_unmapped')) {\n return strand * flipper === 1\n ? 'color_rev_missing_mate'\n : 'color_fwd_missing_mate'\n }\n if (feature.get('seq_id') === feature.get('next_seq_id')) {\n return strand * flipper === 1\n ? 'color_rev_strand_not_proper'\n : 'color_fwd_strand_not_proper'\n }\n // should only leave aberrant chr\n return strand === 1 ? 'color_fwd_diff_chr' : 'color_rev_diff_chr'\n }\n return strand === 1 ? 'color_fwd_strand' : 'color_rev_strand'\n }\n\n colorByPerBaseQuality(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n ) {\n const { feature, topPx, heightPx } = feat\n const qual: string = feature.get('qual') || ''\n const scores = qual.split(' ').map(val => +val)\n const cigarOps = parseCigar(feature.get('CIGAR'))\n const width = 1 / bpPerPx\n const start = feature.get('start')\n\n for (let i = 0, j = 0, k = 0; k < scores.length; i += 2, k++) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op === 'S' || op === 'I') {\n k += len\n } else if (op === 'D' || op === 'N') {\n j += len\n } else if (op === 'M' || op === 'X' || op === '=') {\n for (let m = 0; m < len; m++) {\n const score = scores[k + m]\n ctx.fillStyle = `hsl(${score === 255 ? 150 : score * 1.5},55%,50%)`\n const [leftPx] = bpSpanPx(\n start + j + m,\n start + j + m + 1,\n region,\n bpPerPx,\n )\n ctx.fillRect(leftPx, topPx, width + 0.5, heightPx)\n }\n j += len\n }\n }\n }\n\n // ML stores probabilities as array of numerics and MP is scaled phred scores\n // https://github.com/samtools/hts-specs/pull/418/files#diff-e765c6479316309f56b636f88189cdde8c40b854c7bdcce9ee7fe87a4e76febcR596\n //\n // if we have ML or Ml, it is an 8bit probability, divide by 255\n //\n // if we have MP or Mp it is phred scaled ASCII, which can go up to 90 but\n // has very high likelihood basecalls at that point, we really only care\n // about low qual calls <20 approx\n //\n colorByModifications(\n ctx: CanvasRenderingContext2D,\n layoutFeature: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { feature, topPx, heightPx } = layoutFeature\n const { modificationTagMap = {} } = props\n\n const mm = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n\n const ml = (getTagAlt(feature, 'ML', 'Ml') as number[] | string) || []\n\n const probabilities = ml\n ? (typeof ml === 'string' ? ml.split(',').map(e => +e) : ml).map(\n e => e / 255,\n )\n : (getTagAlt(feature, 'MP', 'Mp') as string)\n .split('')\n .map(s => s.charCodeAt(0) - 33)\n .map(elt => Math.min(1, elt / 50))\n\n const cigar = feature.get('CIGAR')\n const start = feature.get('start')\n const end = feature.get('end')\n const seq = feature.get('seq')\n const strand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n\n const modifications = getModificationPositions(mm, seq, strand)\n\n // probIndex applies across multiple modifications e.g.\n let probIndex = 0\n for (let i = 0; i < modifications.length; i++) {\n const { type, positions } = modifications[i]\n const col = modificationTagMap[type] || 'black'\n const base = Color(col)\n for (const readPos of getNextRefPos(cigarOps, positions)) {\n if (readPos >= 0 && start + readPos < end) {\n const [leftPx, rightPx] = bpSpanPx(\n start + readPos,\n start + readPos + 1,\n region,\n bpPerPx,\n )\n\n // give it a little boost of 0.1 to not make them fully\n // invisible to avoid confusion\n ctx.fillStyle = base\n .alpha(probabilities[probIndex] + 0.1)\n .hsl()\n .string()\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n }\n probIndex++\n }\n }\n }\n\n // Color by methylation is slightly modified version of color by\n // modifications\n //\n colorByMethylation(\n ctx: CanvasRenderingContext2D,\n layoutFeature: LayoutFeature,\n _config: AnyConfigurationModel,\n region: Region,\n bpPerPx: number,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { regionSequence } = props\n const { feature, topPx, heightPx } = layoutFeature\n\n const mm: string = getTagAlt(feature, 'MM', 'Mm') || ''\n\n if (!regionSequence) {\n throw new Error('region sequence required for methylation')\n }\n\n const cigar = feature.get('CIGAR')\n const fstart = feature.get('start')\n const fend = feature.get('end')\n const seq = feature.get('seq')\n const strand = feature.get('strand')\n const cigarOps = parseCigar(cigar)\n const { start: rstart, end: rend } = region\n\n const methBins = new Array(rend - rstart).fill(0)\n const modifications = getModificationPositions(mm, seq, strand)\n for (let i = 0; i < modifications.length; i++) {\n const { type, positions } = modifications[i]\n if (type === 'm' && positions) {\n for (const pos of getNextRefPos(cigarOps, positions)) {\n const epos = pos + fstart - rstart\n if (epos >= 0 && epos < methBins.length) {\n methBins[epos] = 1\n }\n }\n }\n }\n\n for (let j = fstart; j < fend; j++) {\n const i = j - rstart\n if (i >= 0 && i < methBins.length) {\n const l1 = regionSequence[i].toLowerCase()\n const l2 = regionSequence[i + 1].toLowerCase()\n\n // if we are zoomed out, display just a block over the cpg\n if (bpPerPx > 2) {\n if (l1 === 'c' && l2 === 'g') {\n const s = rstart + i\n const [leftPx, rightPx] = bpSpanPx(s, s + 2, region, bpPerPx)\n if (methBins[i] || methBins[i + 1]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n }\n }\n // if we are zoomed in, color the c inside the cpg\n else {\n // color\n if (l1 === 'c' && l2 === 'g') {\n const s = rstart + i\n const [leftPx, rightPx] = bpSpanPx(s, s + 1, region, bpPerPx)\n if (methBins[i]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx, topPx, rightPx - leftPx + 0.5, heightPx)\n\n const [leftPx2, rightPx2] = bpSpanPx(s + 1, s + 2, region, bpPerPx)\n if (methBins[i + 1]) {\n ctx.fillStyle = 'red'\n } else {\n ctx.fillStyle = 'blue'\n }\n ctx.fillRect(leftPx2, topPx, rightPx2 - leftPx2 + 0.5, heightPx)\n }\n }\n }\n }\n }\n\n drawRect(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserialized,\n ) {\n const { regions, bpPerPx } = props\n const { heightPx, topPx, feature } = feat\n const [region] = regions\n const [leftPx, rightPx] = bpSpanPx(\n feature.get('start'),\n feature.get('end'),\n region,\n bpPerPx,\n )\n const flip = region.reversed ? -1 : 1\n const strand = feature.get('strand') * flip\n if (bpPerPx < 10) {\n if (strand === -1) {\n ctx.beginPath()\n ctx.moveTo(leftPx - 5, topPx + heightPx / 2)\n ctx.lineTo(leftPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx)\n ctx.lineTo(leftPx, topPx)\n ctx.closePath()\n ctx.fill()\n } else {\n ctx.beginPath()\n ctx.moveTo(leftPx, topPx)\n ctx.lineTo(leftPx, topPx + heightPx)\n ctx.lineTo(rightPx, topPx + heightPx)\n ctx.lineTo(rightPx + 5, topPx + heightPx / 2)\n ctx.lineTo(rightPx, topPx)\n ctx.closePath()\n ctx.fill()\n }\n } else {\n ctx.fillRect(leftPx, topPx, rightPx - leftPx, heightPx)\n }\n }\n\n drawAlignmentRect(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout & {\n defaultColor: boolean\n },\n ) {\n const {\n defaultColor,\n config,\n bpPerPx,\n regions,\n colorBy,\n colorTagMap = {},\n } = props\n const { tag = '', type: colorType = '' } = colorBy || {}\n const { feature } = feat\n const region = regions[0]\n\n // first pass for simple color changes that change the color of the\n // alignment\n switch (colorType) {\n case 'insertSize':\n ctx.fillStyle = this.colorByInsertSize(feature, config)\n break\n case 'strand':\n ctx.fillStyle = feature.get('strand') === -1 ? '#8F8FD8' : '#EC8B8B'\n break\n case 'mappingQuality':\n ctx.fillStyle = `hsl(${feature.get('mq')},50%,50%)`\n break\n\n case 'pairOrientation':\n ctx.fillStyle = this.colorByOrientation(feature, config)\n break\n case 'stranded':\n ctx.fillStyle = alignmentColoring[this.colorByStranded(feature, config)]\n break\n case 'xs':\n case 'tag': {\n const tags = feature.get('tags')\n const val = tags ? tags[tag] : feature.get(tag)\n\n // special for for XS/TS tag\n if (tag === 'XS' || tag === 'TS') {\n const map: { [key: string]: string | undefined } = {\n '-': 'color_rev_strand',\n '+': 'color_fwd_strand',\n }\n ctx.fillStyle = alignmentColoring[map[val] || 'color_nostrand']\n }\n\n // lower case 'ts' from minimap2 is flipped from xs\n if (tag === 'ts') {\n const map: { [key: string]: string } = {\n '-':\n feature.get('strand') === -1\n ? 'color_fwd_strand'\n : 'color_rev_strand',\n '+':\n feature.get('strand') === -1\n ? 'color_rev_strand'\n : 'color_fwd_strand',\n }\n ctx.fillStyle = alignmentColoring[map[val] || 'color_nostrand']\n }\n\n // tag is not one of the autofilled tags, has color-value pairs from\n // fetchValues\n else {\n const foundValue = colorTagMap[val]\n ctx.fillStyle = foundValue || alignmentColoring['color_nostrand']\n }\n break\n }\n case 'insertSizeAndPairOrientation':\n break\n\n case 'normal':\n default:\n if (defaultColor) {\n // avoid a readConfObject call here\n ctx.fillStyle = '#c8c8c8'\n } else {\n ctx.fillStyle = readConfObject(config, 'color', { feature })\n }\n break\n }\n\n this.drawRect(ctx, feat, props)\n\n // second pass for color types that render per-base things that go over the\n // existing drawing\n switch (colorType) {\n case 'perBaseQuality':\n this.colorByPerBaseQuality(ctx, feat, config, region, bpPerPx)\n break\n\n case 'modifications':\n this.colorByModifications(ctx, feat, config, region, bpPerPx, props)\n break\n\n case 'methylation':\n this.colorByMethylation(ctx, feat, config, region, bpPerPx, props)\n break\n }\n }\n\n drawMismatches(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n theme: Theme,\n colorForBase: { [key: string]: string },\n opts: {\n mismatchAlpha?: boolean\n drawSNPs?: boolean\n drawIndels?: boolean\n minSubfeatureWidth: number\n largeInsertionIndicatorScale: number\n charWidth: number\n charHeight: number\n },\n ) {\n const {\n minSubfeatureWidth: minWidth,\n largeInsertionIndicatorScale,\n mismatchAlpha,\n drawSNPs = true,\n drawIndels = true,\n charWidth,\n charHeight,\n } = opts\n const { bpPerPx, regions } = props\n const { heightPx, topPx, feature } = feat\n const [region] = regions\n const start = feature.get('start')\n\n const pxPerBp = Math.min(1 / bpPerPx, 2)\n const w = Math.max(minWidth, pxPerBp)\n const mismatches: Mismatch[] = feature.get('mismatches')\n const heightLim = charHeight - 2\n\n function getAlphaColor(baseColor: string, mismatch: { qual?: number }) {\n let color = baseColor\n if (mismatchAlpha && mismatch.qual !== undefined) {\n color = Color(baseColor)\n .alpha(Math.min(1, mismatch.qual / 50))\n .hsl()\n .string()\n }\n return color\n }\n\n // extraHorizontallyFlippedOffset is used to draw interbase items, which\n // are located to the left when forward and right when reversed\n const extraHorizontallyFlippedOffset = region.reversed\n ? 1 / bpPerPx + 1\n : -1\n\n // two pass rendering: first pass, draw all the mismatches except wide\n // insertion markers\n for (let i = 0; i < mismatches.length; i += 1) {\n const mismatch = mismatches[i]\n const mstart = start + mismatch.start\n const mlen = mismatch.length\n const mbase = mismatch.base\n const [leftPx, rightPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n const widthPx = Math.max(minWidth, Math.abs(leftPx - rightPx))\n if (mismatch.type === 'mismatch' && drawSNPs) {\n const baseColor = colorForBase[mismatch.base] || '#888'\n\n ctx.fillStyle = getAlphaColor(baseColor, mismatch)\n\n ctx.fillRect(leftPx, topPx, widthPx, heightPx)\n\n if (widthPx >= charWidth && heightPx >= heightLim) {\n // normal SNP coloring\n ctx.fillStyle = getAlphaColor(\n theme.palette.getContrastText(baseColor),\n mismatch,\n )\n ctx.fillText(\n mbase,\n leftPx + (widthPx - charWidth) / 2 + 1,\n topPx + heightPx,\n )\n }\n } else if (mismatch.type === 'deletion' && drawIndels) {\n const baseColor = colorForBase.deletion\n ctx.fillStyle = baseColor\n ctx.fillRect(leftPx, topPx, widthPx, heightPx)\n const txt = `${mismatch.length}`\n const rect = ctx.measureText(txt)\n if (widthPx >= rect.width && heightPx >= heightLim) {\n ctx.fillStyle = theme.palette.getContrastText(baseColor)\n ctx.fillText(\n txt,\n leftPx + (rightPx - leftPx) / 2 - rect.width / 2,\n topPx + heightPx,\n )\n }\n } else if (mismatch.type === 'insertion' && drawIndels) {\n ctx.fillStyle = 'purple'\n const pos = leftPx + extraHorizontallyFlippedOffset\n const len = +mismatch.base || mismatch.length\n const insW = Math.max(minWidth, Math.min(1.2, 1 / bpPerPx))\n if (len < 10) {\n ctx.fillRect(pos, topPx, insW, heightPx)\n if (1 / bpPerPx >= charWidth) {\n ctx.fillRect(pos - insW, topPx, insW * 3, 1)\n ctx.fillRect(pos - insW, topPx + heightPx - 1, insW * 3, 1)\n }\n if (1 / bpPerPx >= charWidth && heightPx >= heightLim) {\n ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n }\n }\n } else if (mismatch.type === 'hardclip' || mismatch.type === 'softclip') {\n ctx.fillStyle = mismatch.type === 'hardclip' ? 'red' : 'blue'\n const pos = leftPx + extraHorizontallyFlippedOffset\n ctx.fillRect(pos, topPx, w, heightPx)\n if (1 / bpPerPx >= charWidth) {\n ctx.fillRect(pos - w, topPx, w * 3, 1)\n ctx.fillRect(pos - w, topPx + heightPx - 1, w * 3, 1)\n }\n if (widthPx >= charWidth && heightPx >= heightLim) {\n ctx.fillText(`(${mismatch.base})`, pos + 3, topPx + heightPx)\n }\n } else if (mismatch.type === 'skip') {\n // fix to avoid bad rendering note that this was also related to chrome\n // bug https://bugs.chromium.org/p/chromium/issues/detail?id=1131528\n // also affected firefox ref #1236 #2750\n if (leftPx + widthPx > 0) {\n // make small exons more visible when zoomed far out\n const adjustPx = widthPx - (bpPerPx > 10 ? 1.5 : 0)\n ctx.clearRect(leftPx, topPx, adjustPx, heightPx)\n ctx.fillStyle = '#333'\n ctx.fillRect(\n Math.max(0, leftPx),\n topPx + heightPx / 2 - 1,\n adjustPx + (leftPx < 0 ? leftPx : 0),\n 2,\n )\n }\n }\n }\n\n // second pass, draw wide insertion markers on top\n if (drawIndels) {\n for (let i = 0; i < mismatches.length; i += 1) {\n const mismatch = mismatches[i]\n const mstart = start + mismatch.start\n const mlen = mismatch.length\n const [leftPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)\n const len = +mismatch.base || mismatch.length\n const txt = `${len}`\n if (mismatch.type === 'insertion' && len >= 10) {\n if (bpPerPx > largeInsertionIndicatorScale) {\n ctx.fillStyle = 'purple'\n ctx.fillRect(leftPx - 1, topPx, 2, heightPx)\n } else if (heightPx > charHeight) {\n const rect = ctx.measureText(txt)\n const padding = 5\n ctx.fillStyle = 'purple'\n ctx.fillRect(\n leftPx - rect.width / 2 - padding,\n topPx,\n rect.width + 2 * padding,\n heightPx,\n )\n ctx.fillStyle = 'white'\n ctx.fillText(txt, leftPx - rect.width / 2, topPx + heightPx)\n } else {\n const padding = 2\n ctx.fillStyle = 'purple'\n ctx.fillRect(leftPx - padding, topPx, 2 * padding, heightPx)\n }\n }\n }\n }\n }\n\n drawSoftClipping(\n ctx: CanvasRenderingContext2D,\n feat: LayoutFeature,\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n config: AnyConfigurationModel,\n theme: Theme,\n ) {\n const { feature, topPx, heightPx } = feat\n const { regions, bpPerPx } = props\n const [region] = regions\n const minFeatWidth = readConfObject(config, 'minSubfeatureWidth')\n const mismatches: Mismatch[] = feature.get('mismatches')\n const seq = feature.get('seq')\n const { charWidth, charHeight } = this.getCharWidthHeight(ctx)\n const colorForBase: { [key: string]: string } = {\n A: theme.palette.bases.A.main,\n C: theme.palette.bases.C.main,\n G: theme.palette.bases.G.main,\n T: theme.palette.bases.T.main,\n deletion: '#808080', // gray\n }\n\n // Display all bases softclipped off in lightened colors\n if (seq) {\n mismatches\n .filter(mismatch => mismatch.type === 'softclip')\n .forEach(mismatch => {\n const softClipLength = mismatch.cliplen || 0\n const s = feature.get('start')\n const softClipStart =\n mismatch.start === 0 ? s - softClipLength : s + mismatch.start\n\n for (let k = 0; k < softClipLength; k += 1) {\n const base = seq.charAt(k + mismatch.start)\n\n // If softclip length+start is longer than sequence, no need to\n // continue showing base\n if (!base) {\n return\n }\n\n const [softClipLeftPx, softClipRightPx] = bpSpanPx(\n softClipStart + k,\n softClipStart + k + 1,\n region,\n bpPerPx,\n )\n const softClipWidthPx = Math.max(\n minFeatWidth,\n Math.abs(softClipLeftPx - softClipRightPx),\n )\n\n // Black accounts for IUPAC ambiguity code bases such as N that\n // show in soft clipping\n const baseColor = colorForBase[base] || '#000000'\n ctx.fillStyle = baseColor\n ctx.fillRect(softClipLeftPx, topPx, softClipWidthPx, heightPx)\n\n if (softClipWidthPx >= charWidth && heightPx >= charHeight - 5) {\n ctx.fillStyle = theme.palette.getContrastText(baseColor)\n ctx.fillText(\n base,\n softClipLeftPx + (softClipWidthPx - charWidth) / 2 + 1,\n topPx + heightPx,\n )\n }\n }\n })\n }\n }\n\n async makeImageData(\n ctx: CanvasRenderingContext2D,\n layoutRecords: (LayoutFeature | null)[],\n props: RenderArgsDeserializedWithFeaturesAndLayout,\n ) {\n const { layout, config, showSoftClip, colorBy, theme: configTheme } = props\n const mismatchAlpha = readConfObject(config, 'mismatchAlpha')\n const minSubfeatureWidth = readConfObject(config, 'minSubfeatureWidth')\n const insertScale = readConfObject(config, 'largeInsertionIndicatorScale')\n const defaultColor = readConfObject(config, 'color') === '#f0f'\n\n const theme = createJBrowseTheme(configTheme)\n const colorForBase = getColorBaseMap(theme)\n if (!layout) {\n throw new Error(`layout required`)\n }\n if (!layout.addRect) {\n throw new Error('invalid layout object')\n }\n ctx.font = 'bold 10px Courier New,monospace'\n\n const { charWidth, charHeight } = this.getCharWidthHeight(ctx)\n layoutRecords.forEach(feat => {\n if (feat === null) {\n return\n }\n\n this.drawAlignmentRect(ctx, feat, {\n ...props,\n defaultColor,\n })\n this.drawMismatches(ctx, feat, props, theme, colorForBase, {\n mismatchAlpha,\n drawSNPs: shouldDrawMismatches(colorBy?.type),\n drawIndels: shouldDrawMismatches(colorBy?.type),\n largeInsertionIndicatorScale: insertScale,\n minSubfeatureWidth,\n charWidth,\n charHeight,\n })\n if (showSoftClip) {\n this.drawSoftClipping(ctx, feat, props, config, theme)\n }\n })\n }\n\n // we perform a full layout before render as a separate method because the\n // layout determines the height of the canvas that we use to render\n layoutFeats(props: RenderArgsDeserializedWithFeaturesAndLayout) {\n const {\n layout,\n features,\n sortedBy,\n config,\n bpPerPx,\n showSoftClip,\n regions,\n } = props\n const [region] = regions\n if (!layout) {\n throw new Error(`layout required`)\n }\n if (!layout.addRect) {\n throw new Error('invalid layout object')\n }\n\n const featureMap =\n sortedBy?.type && region.start === sortedBy.pos\n ? sortFeature(features, sortedBy)\n : features\n\n const heightPx = readConfObject(config, 'height')\n const displayMode = readConfObject(config, 'displayMode')\n const layoutRecords = iterMap(\n featureMap.values(),\n feature =>\n this.layoutFeature({\n feature,\n layout,\n bpPerPx,\n region,\n showSoftClip,\n heightPx,\n displayMode,\n }),\n featureMap.size,\n )\n return layoutRecords\n }\n\n async render(renderProps: RenderArgsDeserialized) {\n const { sessionId, bpPerPx, regions, adapterConfig } = renderProps\n const { sequenceAdapter } = adapterConfig\n const features = await this.getFeatures(renderProps)\n const layout = this.createLayoutInWorker(renderProps)\n\n const layoutRecords = this.layoutFeats({ ...renderProps, features, layout })\n const [region] = regions\n let regionSequence: string | undefined\n const { end, start, originalRefName, refName } = region\n\n if (sequenceAdapter) {\n const { dataAdapter } = await getAdapter(\n this.pluginManager,\n sessionId,\n sequenceAdapter,\n )\n\n const feats = await (dataAdapter as BaseFeatureDataAdapter)\n .getFeatures({\n ...region,\n refName: originalRefName || refName,\n end: region.end + 1,\n })\n .pipe(toArray())\n .toPromise()\n regionSequence = feats[0]?.get('seq')\n }\n\n const width = (end - start) / bpPerPx\n const height = Math.max(layout.getTotalHeight(), 1)\n\n const res = await renderToAbstractCanvas(\n width,\n height,\n renderProps,\n (ctx: CanvasRenderingContext2D) =>\n this.makeImageData(ctx, layoutRecords, {\n ...renderProps,\n layout,\n features,\n regionSequence,\n }),\n )\n\n const results = await super.render({\n ...renderProps,\n ...res,\n features,\n layout,\n height,\n width,\n })\n\n return {\n ...results,\n ...res,\n features,\n layout,\n height,\n width,\n maxHeightReached: layout.maxHeightReached,\n }\n }\n\n createSession(args: PileupLayoutSessionProps) {\n return new PileupLayoutSession(args)\n }\n}\n\nexport type {\n RenderArgs,\n RenderArgsSerialized,\n RenderResults,\n ResultsSerialized,\n ResultsDeserialized,\n}\n","import { Region } from '@jbrowse/core/util/types'\nimport { PrerenderedCanvas } from '@jbrowse/core/ui'\nimport { bpSpanPx } from '@jbrowse/core/util'\nimport { observer } from 'mobx-react'\nimport React, { MouseEvent, useRef, useState, useEffect } from 'react'\nimport type { BaseLinearDisplayModel } from '@jbrowse/plugin-linear-genome-view'\n\n// used so that user can click-away-from-feature below the laid out features\n// (issue #1248)\nconst canvasPadding = 100\nfunction PileupRendering(props: {\n blockKey: string\n displayModel: BaseLinearDisplayModel\n width: number\n height: number\n regions: Region[]\n bpPerPx: number\n sortedBy?: { type: string; pos: number; refName: string }\n colorBy?: { type: string; tag?: string }\n onMouseMove?: (event: React.MouseEvent, featureId: string | undefined) => void\n}) {\n const {\n onMouseMove,\n blockKey,\n displayModel,\n width,\n height,\n regions,\n bpPerPx,\n sortedBy,\n colorBy,\n } = props\n const { selectedFeatureId, featureIdUnderMouse, contextMenuFeature } =\n displayModel\n\n const [region] = regions\n const highlightOverlayCanvas = useRef<HTMLCanvasElement>(null)\n const [mouseIsDown, setMouseIsDown] = useState(false)\n const [movedDuringLastMouseDown, setMovedDuringLastMouseDown] =\n useState(false)\n useEffect(() => {\n const canvas = highlightOverlayCanvas.current\n if (!canvas) {\n return\n }\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n return\n }\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n const selectedRect = selectedFeatureId\n ? displayModel.getFeatureByID?.(blockKey, selectedFeatureId)\n : undefined\n if (selectedRect) {\n const [leftBp, topPx, rightBp, bottomPx] = selectedRect\n const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n const rectTop = Math.round(topPx)\n const rectHeight = Math.round(bottomPx - topPx)\n ctx.shadowColor = '#222266'\n ctx.shadowBlur = 10\n ctx.lineJoin = 'bevel'\n ctx.lineWidth = 2\n ctx.strokeStyle = '#00b8ff'\n ctx.strokeRect(\n leftPx - 2,\n rectTop - 2,\n rightPx - leftPx + 4,\n rectHeight + 4,\n )\n ctx.clearRect(leftPx, rectTop, rightPx - leftPx, rectHeight)\n }\n const highlightedFeature = featureIdUnderMouse || contextMenuFeature?.id()\n const highlightedRect = highlightedFeature\n ? displayModel.getFeatureByID?.(blockKey, highlightedFeature)\n : undefined\n if (highlightedRect) {\n const [leftBp, topPx, rightBp, bottomPx] = highlightedRect\n const [leftPx, rightPx] = bpSpanPx(leftBp, rightBp, region, bpPerPx)\n const rectTop = Math.round(topPx)\n const rectHeight = Math.round(bottomPx - topPx)\n ctx.fillStyle = '#0003'\n ctx.fillRect(leftPx, rectTop, rightPx - leftPx, rectHeight)\n }\n }, [\n bpPerPx,\n region,\n blockKey,\n selectedFeatureId,\n displayModel,\n featureIdUnderMouse,\n contextMenuFeature,\n ])\n\n function onMouseDown(event: MouseEvent) {\n setMouseIsDown(true)\n setMovedDuringLastMouseDown(false)\n callMouseHandler('MouseDown', event)\n }\n\n function onMouseEnter(event: MouseEvent) {\n callMouseHandler('MouseEnter', event)\n }\n\n function onMouseOut(event: MouseEvent) {\n callMouseHandler('MouseOut', event)\n callMouseHandler('MouseLeave', event)\n }\n\n function onMouseOver(event: MouseEvent) {\n callMouseHandler('MouseOver', event)\n }\n\n function onMouseUp(event: MouseEvent) {\n setMouseIsDown(false)\n callMouseHandler('MouseUp', event)\n }\n\n function onClick(event: MouseEvent) {\n if (!movedDuringLastMouseDown) {\n callMouseHandler('Click', event)\n }\n }\n\n function onMouseLeave(event: MouseEvent) {\n callMouseHandler('MouseOut', event)\n callMouseHandler('MouseLeave', event)\n }\n\n function onContextMenu(event: MouseEvent) {\n callMouseHandler('ContextMenu', event)\n }\n\n function mouseMove(event: MouseEvent) {\n if (mouseIsDown) {\n setMovedDuringLastMouseDown(true)\n }\n let offsetX = 0\n let offsetY = 0\n const canvas = highlightOverlayCanvas.current\n if (canvas) {\n const { left, top } = canvas.getBoundingClientRect()\n offsetX = left\n offsetY = top\n }\n offsetX = event.clientX - offsetX\n offsetY = event.clientY - offsetY\n const px = region.reversed ? width - offsetX : offsetX\n const clientBp = region.start + bpPerPx * px\n\n const featIdUnderMouse = displayModel.getFeatureOverlapping(\n blockKey,\n clientBp,\n offsetY,\n )\n\n if (onMouseMove) {\n onMouseMove(event, featIdUnderMouse)\n }\n }\n\n function callMouseHandler(handlerName: string, event: MouseEvent) {\n // @ts-ignore\n // eslint-disable-next-line react/destructuring-assignment\n const featureHandler = props[`onFeature${handlerName}`]\n // @ts-ignore\n // eslint-disable-next-line react/destructuring-assignment\n const canvasHandler = props[`on${handlerName}`]\n if (featureHandler && featureIdUnderMouse) {\n featureHandler(event, featureIdUnderMouse)\n } else if (canvasHandler) {\n canvasHandler(event, featureIdUnderMouse)\n }\n }\n\n const canvasWidth = Math.ceil(width)\n // need to call this in render so we get the right observer behavior\n return (\n <div\n className=\"PileupRendering\"\n data-testid={`pileup-${\n sortedBy || colorBy\n ? `${sortedBy?.type || ''}${colorBy?.type || ''}${colorBy?.tag || ''}`\n : 'normal'\n }`}\n style={{ position: 'relative', width: canvasWidth, height }}\n >\n <PrerenderedCanvas\n {...props}\n style={{ position: 'absolute', left: 0, top: 0 }}\n />\n <canvas\n data-testid=\"pileup_overlay_canvas\"\n width={canvasWidth}\n height={height + canvasPadding}\n style={{ position: 'absolute', left: 0, top: 0 }}\n className=\"highlightOverlayCanvas\"\n ref={highlightOverlayCanvas}\n onMouseDown={event => onMouseDown(event)}\n onMouseEnter={event => onMouseEnter(event)}\n onMouseOut={event => onMouseOut(event)}\n onMouseOver={event => onMouseOver(event)}\n onMouseUp={event => onMouseUp(event)}\n onMouseLeave={event => onMouseLeave(event)}\n onMouseMove={event => mouseMove(event)}\n onClick={event => onClick(event)}\n onContextMenu={event => onContextMenu(event)}\n onFocus={() => {}}\n onBlur={() => {}}\n />\n </div>\n )\n}\n\nexport default observer(PileupRendering)\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { types } from 'mobx-state-tree'\n\nexport default ConfigurationSchema(\n 'PileupRenderer',\n {\n // default magenta here is used to detect the user has not customized this\n color: {\n type: 'color',\n description: 'the color of each feature in a pileup alignment',\n defaultValue: '#f0f',\n contextVariable: ['feature'],\n },\n orientationType: {\n type: 'stringEnum',\n model: types.enumeration('orientationType', ['fr', 'rf', 'ff']),\n defaultValue: 'fr',\n description:\n 'read sequencer orienation. fr is normal \"reads pointing at each other ---> <--- while some other sequencers can use other options',\n },\n displayMode: {\n type: 'stringEnum',\n model: types.enumeration('displayMode', [\n 'normal',\n 'compact',\n 'collapse',\n ]),\n description: 'Alternative display modes',\n defaultValue: 'normal',\n },\n minSubfeatureWidth: {\n type: 'number',\n description:\n 'the minimum width in px for a pileup mismatch feature. use for increasing mismatch marker widths when zoomed out to e.g. 1px or 0.5px',\n defaultValue: 0,\n },\n maxHeight: {\n type: 'integer',\n description: 'the maximum height to be used in a pileup rendering',\n defaultValue: 1200,\n },\n maxClippingSize: {\n type: 'integer',\n description: 'the max clip size to be used in a pileup rendering',\n defaultValue: 10000,\n },\n height: {\n type: 'number',\n description: 'the height of each feature in a pileup alignment',\n defaultValue: 7,\n contextVariable: ['feature'],\n },\n noSpacing: {\n type: 'boolean',\n description: 'remove spacing between features',\n defaultValue: false,\n },\n largeInsertionIndicatorScale: {\n type: 'number',\n description:\n 'scale at which to draw the large insertion indicators (bp/pixel)',\n defaultValue: 10,\n },\n mismatchAlpha: {\n type: 'boolean',\n defaultValue: false,\n description: 'Fade low quality mismatches',\n },\n },\n { explicitlyTyped: true },\n)\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport PileupRenderer from './PileupRenderer'\nimport ReactComponent from './components/PileupRendering'\nimport configSchema from './configSchema'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addRendererType(\n () =>\n new PileupRenderer({\n name: 'PileupRenderer',\n ReactComponent,\n configSchema,\n pluginManager,\n }),\n )\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nconst configModelFactory = (pluginManager: PluginManager) => {\n const PileupDisplayConfigSchema = pluginManager.getDisplayType(\n 'LinearPileupDisplay',\n ).configSchema\n const SNPCoverageDisplayConfigSchema = pluginManager.getDisplayType(\n 'LinearSNPCoverageDisplay',\n ).configSchema\n\n return ConfigurationSchema(\n 'LinearAlignmentsDisplay',\n {\n pileupDisplay: PileupDisplayConfigSchema,\n snpCoverageDisplay: SNPCoverageDisplayConfigSchema,\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n\nexport type AlignmentsConfigModel = ReturnType<typeof configModelFactory>\nexport default configModelFactory\n","import React from 'react'\nimport {\n ConfigurationReference,\n AnyConfigurationModel,\n getConf,\n} from '@jbrowse/core/configuration'\nimport { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { MenuItem } from '@jbrowse/core/ui'\nimport { autorun, when } from 'mobx'\nimport { addDisposer, getSnapshot, Instance, types } from 'mobx-state-tree'\nimport { getContainingTrack } from '@jbrowse/core/util'\nimport deepEqual from 'fast-deep-equal'\nimport { AlignmentsConfigModel } from './configSchema'\n\nconst minDisplayHeight = 20\nconst stateModelFactory = (\n pluginManager: PluginManager,\n configSchema: AlignmentsConfigModel,\n) => {\n return types\n .compose(\n 'LinearAlignmentsDisplay',\n BaseDisplay,\n types.model({\n PileupDisplay: types.maybe(\n pluginManager.getDisplayType('LinearPileupDisplay').stateModel,\n ),\n SNPCoverageDisplay: types.maybe(\n pluginManager.getDisplayType('LinearSNPCoverageDisplay').stateModel,\n ),\n snpCovHeight: 45,\n type: types.literal('LinearAlignmentsDisplay'),\n configuration: ConfigurationReference(configSchema),\n height: 250,\n showCoverage: true,\n showPileup: true,\n userFeatureScreenDensity: types.maybe(types.number),\n }),\n )\n .volatile(() => ({\n scrollTop: 0,\n }))\n .actions(self => ({\n toggleCoverage() {\n self.showCoverage = !self.showCoverage\n },\n togglePileup() {\n self.showPileup = !self.showPileup\n },\n setScrollTop(scrollTop: number) {\n self.scrollTop = scrollTop\n },\n setSNPCoverageHeight(n: number) {\n self.snpCovHeight = n\n },\n }))\n .views(self => {\n const { trackMenuItems: superTrackMenuItems } = self\n return {\n get pileupDisplayConfig() {\n const conf = getConf(self, 'pileupDisplay')\n const track = getContainingTrack(self)\n return {\n ...conf,\n type: 'LinearPileupDisplay',\n name: `${getConf(track, 'name')} pileup`,\n displayId: `${self.configuration.displayId}_pileup_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n }\n },\n\n getFeatureByID(blockKey: string, id: string) {\n return self.PileupDisplay.getFeatureByID(blockKey, id)\n },\n searchFeatureByID(id: string) {\n return self.PileupDisplay.searchFeatureByID(id)\n },\n\n get features() {\n return self.PileupDisplay.features\n },\n\n get DisplayBlurb() {\n return self.PileupDisplay?.DisplayBlurb\n },\n\n get sortedBy() {\n return self.PileupDisplay.sortedBy\n },\n get sortedByPosition() {\n return self.PileupDisplay.sortedByPosition\n },\n get sortedByRefName() {\n return self.PileupDisplay.sortedByRefName\n },\n\n get snpCoverageDisplayConfig() {\n const conf = getConf(self, 'snpCoverageDisplay')\n const track = getContainingTrack(self)\n return {\n ...conf,\n type: 'LinearSNPCoverageDisplay',\n name: `${getConf(track, 'name')} snp coverage`,\n displayId: `${self.configuration.displayId}_snpcoverage_xyz`, // xyz to avoid someone accidentally naming the displayId similar to this\n }\n },\n\n trackMenuItems(): MenuItem[] {\n return [\n ...superTrackMenuItems(),\n {\n type: 'subMenu',\n label: 'Pileup settings',\n subMenu: self.PileupDisplay.trackMenuItems(),\n },\n {\n type: 'subMenu',\n label: 'SNPCoverage settings',\n subMenu: self.SNPCoverageDisplay.trackMenuItems(),\n },\n ]\n },\n }\n })\n .actions(self => ({\n setSNPCoverageDisplay(displayConfig: AnyConfigurationModel) {\n self.SNPCoverageDisplay = {\n type: 'LinearSNPCoverageDisplay',\n configuration: displayConfig,\n height: self.snpCovHeight,\n }\n },\n setUserFeatureScreenDensity(limit: number) {\n self.PileupDisplay.setUserFeatureScreenDensity(limit)\n self.SNPCoverageDisplay.setUserFeatureScreenDensity(limit)\n },\n setPileupDisplay(displayConfig: AnyConfigurationModel) {\n self.PileupDisplay = {\n type: 'LinearPileupDisplay',\n configuration: displayConfig,\n }\n },\n setHeight(displayHeight: number) {\n if (displayHeight > minDisplayHeight) {\n self.height = displayHeight\n } else {\n self.height = minDisplayHeight\n }\n return self.height\n },\n resizeHeight(distance: number) {\n const oldHeight = self.height\n const newHeight = this.setHeight(self.height + distance)\n return newHeight - oldHeight\n },\n }))\n .actions(self => ({\n afterAttach() {\n addDisposer(\n self,\n autorun(() => {\n if (!self.SNPCoverageDisplay) {\n self.setSNPCoverageDisplay(self.snpCoverageDisplayConfig)\n } else if (\n !deepEqual(\n self.snpCoverageDisplayConfig,\n getSnapshot(self.SNPCoverageDisplay.configuration),\n )\n ) {\n self.SNPCoverageDisplay.setHeight(self.snpCovHeight)\n self.SNPCoverageDisplay.setConfig(self.snpCoverageDisplayConfig)\n }\n\n if (!self.PileupDisplay) {\n self.setPileupDisplay(self.pileupDisplayConfig)\n } else if (\n !deepEqual(\n self.pileupDisplayConfig,\n getSnapshot(self.PileupDisplay.configuration),\n )\n ) {\n self.PileupDisplay.setConfig(self.pileupDisplayConfig)\n }\n\n // propagate the filterBy setting from pileupdisplay to snpcoverage\n // note: the snpcoverage display is not able to control filterBy\n // itself\n if (\n self.PileupDisplay.filterBy &&\n !deepEqual(\n getSnapshot(self.PileupDisplay.filterBy),\n getSnapshot(self.SNPCoverageDisplay.filterBy),\n )\n ) {\n self.SNPCoverageDisplay.setFilterBy(\n getSnapshot(self.PileupDisplay.filterBy),\n )\n }\n if (\n self.PileupDisplay.colorBy &&\n !deepEqual(\n getSnapshot(self.PileupDisplay.colorBy),\n self.SNPCoverageDisplay.colorBy\n ? getSnapshot(self.SNPCoverageDisplay.colorBy)\n : {},\n )\n ) {\n self.SNPCoverageDisplay.setColorBy(\n getSnapshot(self.PileupDisplay.colorBy),\n )\n }\n }),\n )\n addDisposer(\n self,\n autorun(() => {\n self.setSNPCoverageHeight(self.SNPCoverageDisplay.height)\n }),\n )\n },\n async renderSvg(opts: { rasterizeLayers?: boolean }) {\n const pileupHeight = self.height - self.SNPCoverageDisplay.height\n await when(() => self.PileupDisplay.ready)\n return (\n <>\n <g>{await self.SNPCoverageDisplay.renderSvg(opts)}</g>\n <g transform={`translate(0 ${self.SNPCoverageDisplay.height})`}>\n {await self.PileupDisplay.renderSvg({\n ...opts,\n overrideHeight: pileupHeight,\n })}\n </g>\n </>\n )\n },\n }))\n}\n\nexport default stateModelFactory\nexport type AlignmentsDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type AlignmentsDisplayModel = Instance<AlignmentsDisplayStateModel>\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { ResizeHandle } from '@jbrowse/core/ui'\nimport { makeStyles } from '@material-ui/core'\nimport { AlignmentsDisplayModel } from '../models/model'\n\nconst useStyles = makeStyles(() => ({\n resizeHandle: {\n height: 2,\n position: 'absolute',\n zIndex: 2,\n },\n}))\n\nfunction AlignmentsDisplay({ model }: { model: AlignmentsDisplayModel }) {\n const { PileupDisplay, SNPCoverageDisplay, showPileup, showCoverage } = model\n const classes = useStyles()\n const top = SNPCoverageDisplay.height\n return (\n <div\n data-testid={`display-${getConf(model, 'displayId')}`}\n style={{ position: 'relative' }}\n >\n {showCoverage ? (\n <>\n <div data-testid=\"Blockset-snpcoverage\">\n <SNPCoverageDisplay.RenderingComponent model={SNPCoverageDisplay} />\n </div>\n <ResizeHandle\n onDrag={delta => {\n SNPCoverageDisplay.setHeight(SNPCoverageDisplay.height + delta)\n return delta\n }}\n className={classes.resizeHandle}\n style={{\n top,\n }}\n />\n </>\n ) : null}\n\n {showPileup ? (\n <div\n data-testid=\"Blockset-pileup\"\n style={{\n position: 'absolute',\n top: showCoverage ? SNPCoverageDisplay.height : 0,\n }}\n >\n <PileupDisplay.RenderingComponent model={PileupDisplay} />\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default observer(AlignmentsDisplay)\n","import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\n// locals\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport ReactComponent from './components/AlignmentsDisplay'\n\nexport default function (pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearAlignmentsDisplay',\n configSchema,\n stateModel: modelFactory(pluginManager, configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent,\n })\n })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view'\nimport { types } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nexport default function SNPCoverageConfigFactory(pluginManager: PluginManager) {\n const SNPCoverageRendererConfigSchema = pluginManager.getRendererType(\n 'SNPCoverageRenderer',\n ).configSchema\n\n return ConfigurationSchema(\n 'LinearSNPCoverageDisplay',\n {\n autoscale: {\n type: 'stringEnum',\n defaultValue: 'local',\n model: types.enumeration('Autoscale type', ['local']),\n description:\n 'performs local autoscaling (no other options for SNP Coverage available)',\n },\n minScore: {\n type: 'number',\n defaultValue: Number.MIN_VALUE,\n description: 'minimum value for the y-scale',\n },\n maxScore: {\n type: 'number',\n description: 'maximum value for the y-scale',\n defaultValue: Number.MAX_VALUE,\n },\n scaleType: {\n type: 'stringEnum',\n model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale\n description: 'The type of scale to use',\n defaultValue: 'linear',\n },\n inverted: {\n type: 'boolean',\n description: 'draw upside down',\n defaultValue: false,\n },\n\n multiTicks: {\n type: 'boolean',\n description: 'Display multiple values for the ticks',\n defaultValue: false,\n },\n\n renderers: ConfigurationSchema('RenderersConfiguration', {\n SNPCoverageRenderer: SNPCoverageRendererConfigSchema,\n }),\n },\n { baseConfiguration: baseLinearDisplayConfigSchema, explicitlyTyped: true },\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react'\nimport { observer } from 'mobx-react'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { Tooltip } from '@jbrowse/plugin-wiggle'\n\ntype Count = {\n [key: string]: {\n total: number\n strands: { [key: string]: number }\n }\n}\n\ntype SNPInfo = {\n ref: Count\n cov: Count\n lowqual: Count\n noncov: Count\n delskips: Count\n total: number\n}\n\nconst en = (n: number) => n.toLocaleString('en-US')\n\nconst TooltipContents = React.forwardRef(\n ({ feature }: { feature: Feature }, ref: any) => {\n const start = feature.get('start')\n const end = feature.get('end')\n const name = feature.get('refName')\n const info = feature.get('snpinfo') as SNPInfo\n const loc = [name, start === end ? en(start) : `${en(start)}..${en(end)}`]\n .filter(f => !!f)\n .join(':')\n\n const total = info?.total\n\n return (\n <div ref={ref}>\n <table>\n <caption>{loc}</caption>\n <thead>\n <tr>\n <th>Base</th>\n <th>Count</th>\n <th>% of Total</th>\n <th>Strands</th>\n <th>Source</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Total</td>\n <td>{total}</td>\n <td />\n </tr>\n\n {Object.entries(info).map(([key, entry]) => {\n return Object.entries(entry).map(([base, score]) => {\n const { strands } = score\n return (\n <tr key={base}>\n <td>{base.toUpperCase()}</td>\n <td>{score.total}</td>\n <td>\n {base === 'total' || base === 'skip'\n ? '---'\n : `${Math.floor(\n (score.total / (total || score.total || 1)) * 100,\n )}%`}\n </td>\n <td>\n {strands['-1'] ? `${strands['-1']}(-)` : ''}\n {strands['1'] ? `${strands['1']}(+)` : ''}\n </td>\n <td>{key}</td>\n </tr>\n )\n })\n })}\n </tbody>\n </table>\n </div>\n )\n },\n)\n\ntype Coord = [number, number]\n\nconst SNPCoverageTooltip = observer(\n (props: {\n model: any\n height: number\n offsetMouseCoord: Coord\n clientMouseCoord: Coord\n clientRect?: DOMRect\n }) => {\n const { model } = props\n const { featureUnderMouse: feat } = model\n return feat && feat.get('type') === 'skip' ? null : (\n <Tooltip TooltipContents={TooltipContents} {...props} />\n )\n },\n)\n\nexport default SNPCoverageTooltip\n","import { BlockSet } from '@jbrowse/core/util/blockTypes'\n\nimport { getSession } from '@jbrowse/core/util'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport { IAnyStateTreeNode } from 'mobx-state-tree'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\n\nexport async function getUniqueTagValues(\n self: IAnyStateTreeNode & { adapterConfig: AnyConfigurationModel },\n colorScheme: { type: string; tag?: string },\n blocks: BlockSet,\n opts?: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n) {\n const { rpcManager } = getSession(self)\n const { adapterConfig } = self\n const sessionId = getRpcSessionId(self)\n const values = await rpcManager.call(\n getRpcSessionId(self),\n 'PileupGetGlobalValueForTag',\n {\n adapterConfig,\n tag: colorScheme.tag,\n sessionId,\n regions: blocks.contentBlocks,\n ...opts,\n },\n )\n return values as string[]\n}\n\nexport async function getUniqueModificationValues(\n self: IAnyStateTreeNode & {\n parentTrack: IAnyStateTreeNode & { configuration: AnyConfigurationModel }\n },\n adapterConfig: AnyConfigurationModel,\n colorScheme: { type: string; tag?: string },\n blocks: BlockSet,\n opts?: {\n headers?: Record<string, string>\n signal?: AbortSignal\n filters?: string[]\n },\n) {\n const { rpcManager } = getSession(self)\n const sessionId = getRpcSessionId(self)\n const values = await rpcManager.call(\n sessionId,\n 'PileupGetVisibleModifications',\n {\n adapterConfig,\n tag: colorScheme.tag,\n sessionId,\n regions: blocks.contentBlocks,\n ...opts,\n },\n )\n return values as string[]\n}\n","import { addDisposer, types, cast, getEnv, getSnapshot } from 'mobx-state-tree'\nimport { observable, autorun } from 'mobx'\nimport { getConf, readConfObject } from '@jbrowse/core/configuration'\nimport { linearWiggleDisplayModelFactory } from '@jbrowse/plugin-wiggle'\nimport {\n AnyConfigurationSchemaType,\n AnyConfigurationModel,\n} from '@jbrowse/core/configuration/configurationSchema'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { getContainingView } from '@jbrowse/core/util'\nimport Tooltip from '../components/Tooltip'\nimport { getUniqueModificationValues } from '../../shared'\nimport { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'\n\n// using a map because it preserves order\nconst rendererTypes = new Map([['snpcoverage', 'SNPCoverageRenderer']])\n\ntype LGV = LinearGenomeViewModel\n\nconst stateModelFactory = (\n pluginManager: PluginManager,\n configSchema: AnyConfigurationSchemaType,\n) =>\n types\n .compose(\n 'LinearSNPCoverageDisplay',\n linearWiggleDisplayModelFactory(pluginManager, configSchema),\n types.model({\n type: types.literal('LinearSNPCoverageDisplay'),\n drawInterbaseCounts: types.maybe(types.boolean),\n drawIndicators: types.maybe(types.boolean),\n drawArcs: types.maybe(types.boolean),\n filterBy: types.optional(\n types.model({\n flagInclude: types.optional(types.number, 0),\n flagExclude: types.optional(types.number, 1540),\n readName: types.maybe(types.string),\n tagFilter: types.maybe(\n types.model({ tag: types.string, value: types.string }),\n ),\n }),\n {},\n ),\n colorBy: types.maybe(\n types.model({\n type: types.string,\n tag: types.maybe(types.string),\n }),\n ),\n }),\n )\n .volatile(() => ({\n modificationTagMap: observable.map({}),\n }))\n .actions(self => ({\n setConfig(configuration: AnyConfigurationModel) {\n self.configuration = configuration\n },\n setFilterBy(filter: {\n flagInclude: number\n flagExclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }) {\n self.filterBy = cast(filter)\n },\n setColorBy(colorBy?: { type: string; tag?: string }) {\n self.colorBy = cast(colorBy)\n },\n\n updateModificationColorMap(uniqueModifications: string[]) {\n const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']\n let i = 0\n\n uniqueModifications.forEach(value => {\n if (!self.modificationTagMap.has(value)) {\n const newColor = colorPalette[i++]\n self.modificationTagMap.set(value, newColor)\n }\n })\n },\n }))\n .views(self => {\n const { renderProps: superRenderProps } = self\n return {\n get rendererConfig() {\n const configBlob =\n getConf(self, ['renderers', self.rendererTypeName]) || {}\n\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n drawInterbaseCounts:\n self.drawInterbaseCounts === undefined\n ? configBlob.drawInterbaseCounts\n : self.drawInterbaseCounts,\n drawIndicators:\n self.drawIndicators === undefined\n ? configBlob.drawIndicators\n : self.drawIndicators,\n drawArcs:\n self.drawArcs === undefined\n ? configBlob.drawArcs\n : self.drawArcs,\n },\n getEnv(self),\n )\n },\n get drawArcsSetting() {\n return self.drawArcs !== undefined\n ? self.drawArcs\n : readConfObject(this.rendererConfig, 'drawArcs')\n },\n get drawInterbaseCountsSetting() {\n return self.drawInterbaseCounts !== undefined\n ? self.drawInterbaseCounts\n : readConfObject(this.rendererConfig, 'drawInterbaseCounts')\n },\n get drawIndicatorsSetting() {\n return self.drawIndicators !== undefined\n ? self.drawIndicators\n : readConfObject(this.rendererConfig, 'drawIndicators')\n },\n\n get modificationsReady() {\n return self.colorBy?.type === 'modifications'\n ? Object.keys(JSON.parse(JSON.stringify(self.modificationTagMap)))\n .length > 0\n : true\n },\n\n renderProps() {\n const superProps = superRenderProps()\n return {\n ...superProps,\n notReady: superProps.notReady || !this.modificationsReady,\n filters: self.filters,\n modificationTagMap: JSON.parse(\n JSON.stringify(self.modificationTagMap),\n ),\n\n // must use getSnapshot because otherwise changes to e.g. just the\n // colorBy.type are not read\n colorBy: self.colorBy ? getSnapshot(self.colorBy) : undefined,\n }\n },\n }\n })\n .actions(self => ({\n toggleDrawIndicators() {\n self.drawIndicators = !self.drawIndicatorsSetting\n },\n toggleDrawInterbaseCounts() {\n self.drawInterbaseCounts = !self.drawInterbaseCountsSetting\n },\n toggleDrawArcs() {\n self.drawArcs = !self.drawArcsSetting\n },\n afterAttach() {\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const { colorBy } = self\n const { staticBlocks } = getContainingView(self) as LGV\n if (colorBy?.type === 'modifications') {\n const vals = await getUniqueModificationValues(\n self,\n getConf(self.parentTrack, 'adapter'),\n colorBy,\n staticBlocks,\n )\n self.updateModificationColorMap(vals)\n }\n } catch (error) {\n console.error(error)\n self.setError(error)\n }\n },\n { delay: 1000 },\n ),\n )\n },\n }))\n\n .views(self => {\n const { trackMenuItems: superTrackMenuItems } = self\n return {\n get TooltipComponent() {\n return Tooltip\n },\n\n get adapterConfig() {\n const subadapter = getConf(self.parentTrack, 'adapter')\n return {\n type: 'SNPCoverageAdapter',\n subadapter,\n }\n },\n\n get rendererTypeName() {\n return rendererTypes.get('snpcoverage')\n },\n\n get needsScalebar() {\n return true\n },\n\n contextMenuItems() {\n return []\n },\n\n trackMenuItems() {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Draw insertion/clipping indicators',\n type: 'checkbox',\n checked: self.drawIndicatorsSetting,\n onClick: () => {\n self.toggleDrawIndicators()\n },\n },\n {\n label: 'Draw insertion/clipping counts',\n type: 'checkbox',\n checked: self.drawInterbaseCountsSetting,\n onClick: () => {\n self.toggleDrawInterbaseCounts()\n },\n },\n {\n label: 'Draw arcs',\n type: 'checkbox',\n checked: self.drawArcsSetting,\n onClick: () => {\n self.toggleDrawArcs()\n },\n },\n ]\n },\n // The SNPCoverage filters are called twice because the BAM/CRAM\n // features pass filters and then the SNPCoverage score features pass\n // through here, and are already have 'snpinfo' are passed through\n get filters() {\n let filters: string[] = []\n if (self.filterBy) {\n const { flagInclude, flagExclude, tagFilter, readName } =\n self.filterBy\n filters = [\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `((get(feature,'flags')&${flagInclude})==${flagInclude}) && ` +\n `!((get(feature,'flags')&${flagExclude}))`,\n ]\n\n if (tagFilter) {\n const { tag, value } = tagFilter\n filters.push(\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `\"${value}\" =='*' ? getTag(feature,\"${tag}\") != undefined : ` +\n `getTag(feature,\"${tag}\") == \"${value}\"`,\n )\n }\n if (readName) {\n filters.push(\n `jexl:get(feature,'snpinfo') != undefined ? true : ` +\n `get(feature,'name') == \"${readName}\"`,\n )\n }\n }\n return new SerializableFilterChain({ filters })\n },\n }\n })\n\nexport type SNPCoverageDisplayModel = ReturnType<typeof stateModelFactory>\n\nexport default stateModelFactory\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport configSchemaFactory from './models/configSchema'\nimport modelFactory from './models/model'\nimport { LinearWiggleDisplayReactComponent } from '@jbrowse/plugin-wiggle'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearSNPCoverageDisplay',\n configSchema,\n stateModel: modelFactory(pluginManager, configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: LinearWiggleDisplayReactComponent,\n })\n })\n}\n","import { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-genome-view'\nimport { types, Instance } from 'mobx-state-tree'\nimport PluginManager from '@jbrowse/core/PluginManager'\n\nfunction PileupConfigFactory(pluginManager: PluginManager) {\n const PileupRendererConfigSchema =\n pluginManager.getRendererType('PileupRenderer').configSchema\n const SvgFeatureRendererConfigSchema =\n pluginManager.getRendererType('SvgFeatureRenderer').configSchema\n\n // modify config schema to take in a sub coverage display\n return ConfigurationSchema(\n 'LinearPileupDisplay',\n {\n defaultRendering: {\n type: 'stringEnum',\n model: types.enumeration('Rendering', ['pileup', 'svg']),\n defaultValue: 'pileup',\n },\n renderers: ConfigurationSchema('RenderersConfiguration', {\n PileupRenderer: PileupRendererConfigSchema,\n SvgFeatureRenderer: SvgFeatureRendererConfigSchema,\n }),\n renderer: '',\n maxFeatureScreenDensity: {\n type: 'number',\n description: 'maximum features per pixel that is displayed in the view',\n defaultValue: 5,\n },\n colorScheme: {\n type: 'stringEnum',\n model: types.enumeration('colorScheme', [\n 'strand',\n 'normal',\n 'insertSize',\n 'insertSizeAndOrientation',\n 'mappingQuality',\n 'tag',\n ]),\n description: 'color scheme to use',\n defaultValue: 'normal',\n },\n },\n {\n baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),\n explicitlyTyped: true,\n },\n )\n}\n\nexport type LinearPileupDisplayConfigModel = ReturnType<\n typeof PileupConfigFactory\n>\nexport type LinearPileupDisplayConfig = Instance<LinearPileupDisplayConfigModel>\nexport default PileupConfigFactory\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport Typography from '@material-ui/core/Typography'\n\nexport interface LinearPileupDisplayBlurbProps {\n model: {\n sortedBy?: {\n pos: number\n refName: number\n type: string\n }\n }\n}\n\nfunction LinearPileupDisplayBlurb(props: LinearPileupDisplayBlurbProps) {\n const { model } = props\n const { sortedBy } = model\n return sortedBy ? (\n <div\n data-testid={`blurb-${model.sortedBy}`}\n style={{ backgroundColor: 'white' }}\n >\n <Typography color=\"secondary\" variant=\"caption\">\n {model.sortedBy\n ? `Sorted by ${sortedBy.type.toLowerCase()} at ${sortedBy.refName}:${\n sortedBy.pos\n }`\n : null}\n </Typography>\n </div>\n ) : null\n}\nexport default observer(LinearPileupDisplayBlurb)\n","import { lazy } from 'react'\nimport {\n ConfigurationReference,\n readConfObject,\n getConf,\n} from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n getSession,\n isSessionModelWithWidgets,\n getContainingView,\n} from '@jbrowse/core/util'\n\nimport VisibilityIcon from '@material-ui/icons/Visibility'\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport {\n LinearGenomeViewModel,\n BaseLinearDisplay,\n} from '@jbrowse/plugin-linear-genome-view'\nimport { cast, types, addDisposer, getEnv, Instance } from 'mobx-state-tree'\nimport copy from 'copy-to-clipboard'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen'\nimport SortIcon from '@material-ui/icons/Sort'\nimport PaletteIcon from '@material-ui/icons/Palette'\nimport FilterListIcon from '@material-ui/icons/ClearAll'\n\nimport { autorun, observable } from 'mobx'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema'\nimport SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'\nimport { LinearPileupDisplayConfigModel } from './configSchema'\nimport LinearPileupDisplayBlurb from './components/LinearPileupDisplayBlurb'\n\nimport { getUniqueTagValues, getUniqueModificationValues } from '../shared'\n\nconst ColorByTagDlg = lazy(() => import('./components/ColorByTag'))\nconst FilterByTagDlg = lazy(() => import('./components/FilterByTag'))\nconst SortByTagDlg = lazy(() => import('./components/SortByTag'))\nconst SetFeatureHeightDlg = lazy(() => import('./components/SetFeatureHeight'))\nconst SetMaxHeightDlg = lazy(() => import('./components/SetMaxHeight'))\nconst ModificationsDlg = lazy(() => import('./components/ColorByModifications'))\n\n// using a map because it preserves order\nconst rendererTypes = new Map([\n ['pileup', 'PileupRenderer'],\n ['svg', 'SvgFeatureRenderer'],\n])\n\ntype LGV = LinearGenomeViewModel\n\nconst stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>\n types\n .compose(\n 'LinearPileupDisplay',\n BaseLinearDisplay,\n types.model({\n type: types.literal('LinearPileupDisplay'),\n configuration: ConfigurationReference(configSchema),\n showSoftClipping: false,\n featureHeight: types.maybe(types.number),\n noSpacing: types.maybe(types.boolean),\n fadeLikelihood: types.maybe(types.boolean),\n trackMaxHeight: types.maybe(types.number),\n mismatchAlpha: types.maybe(types.boolean),\n sortedBy: types.maybe(\n types.model({\n type: types.string,\n pos: types.number,\n tag: types.maybe(types.string),\n refName: types.string,\n assemblyName: types.string,\n }),\n ),\n colorBy: types.maybe(\n types.model({\n type: types.string,\n tag: types.maybe(types.string),\n extra: types.frozen(),\n }),\n ),\n filterBy: types.optional(\n types.model({\n flagInclude: types.optional(types.number, 0),\n flagExclude: types.optional(types.number, 1540),\n readName: types.maybe(types.string),\n tagFilter: types.maybe(\n types.model({ tag: types.string, value: types.string }),\n ),\n }),\n {},\n ),\n }),\n )\n .volatile(() => ({\n colorTagMap: observable.map<string, string>({}),\n modificationTagMap: observable.map<string, string>({}),\n ready: false,\n }))\n .actions(self => ({\n setReady(flag: boolean) {\n self.ready = flag\n },\n setMaxHeight(n: number) {\n self.trackMaxHeight = n\n },\n setFeatureHeight(n: number) {\n self.featureHeight = n\n },\n setNoSpacing(flag: boolean) {\n self.noSpacing = flag\n },\n\n setColorScheme(colorScheme: { type: string; tag?: string }) {\n self.colorTagMap = observable.map({}) // clear existing mapping\n self.colorBy = cast(colorScheme)\n self.ready = false\n },\n\n updateModificationColorMap(uniqueModifications: string[]) {\n const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']\n uniqueModifications.forEach(value => {\n if (!self.modificationTagMap.has(value)) {\n const totalKeys = [...self.modificationTagMap.keys()].length\n const newColor = colorPalette[totalKeys]\n self.modificationTagMap.set(value, newColor)\n }\n })\n },\n\n updateColorTagMap(uniqueTag: string[]) {\n // pale color scheme https://cran.r-project.org/web/packages/khroma/vignettes/tol.html e.g. \"tol_light\"\n const colorPalette = [\n '#BBCCEE',\n 'pink',\n '#CCDDAA',\n '#EEEEBB',\n '#FFCCCC',\n 'lightblue',\n 'lightgreen',\n 'tan',\n '#CCEEFF',\n 'lightsalmon',\n ]\n\n uniqueTag.forEach(value => {\n if (!self.colorTagMap.has(value)) {\n const totalKeys = [...self.colorTagMap.keys()].length\n const newColor = colorPalette[totalKeys]\n self.colorTagMap.set(value, newColor)\n }\n })\n },\n }))\n .actions(self => ({\n afterAttach() {\n addDisposer(\n self,\n autorun(\n async () => {\n try {\n const { rpcManager } = getSession(self)\n const { sortedBy, colorBy } = self\n const view = getContainingView(self) as LGV\n\n // continually generate the vc pairing, set and rerender if any\n // new values seen\n if (colorBy?.tag) {\n const uniqueTagSet = await getUniqueTagValues(\n self,\n colorBy,\n view.staticBlocks,\n )\n self.updateColorTagMap(uniqueTagSet)\n }\n\n if (colorBy?.type === 'modifications') {\n const uniqueModificationsSet =\n await getUniqueModificationValues(\n self,\n getConf(self.parentTrack, ['adapter']),\n colorBy,\n view.staticBlocks,\n )\n self.updateModificationColorMap(uniqueModificationsSet)\n }\n\n if (sortedBy) {\n const { pos, refName, assemblyName } = sortedBy\n\n const region = {\n start: pos,\n end: pos + 1,\n refName,\n assemblyName,\n }\n\n // render just the sorted region first\n await self.rendererType.renderInClient(rpcManager, {\n assemblyName,\n regions: [region],\n adapterConfig: self.adapterConfig,\n rendererType: self.rendererType.name,\n sessionId: getRpcSessionId(self),\n timeout: 1000000,\n ...self.renderProps(),\n })\n self.setReady(true)\n self.setCurrBpPerPx(view.bpPerPx)\n } else {\n self.setReady(true)\n }\n } catch (e) {\n console.error(e)\n self.setError(e)\n }\n },\n { delay: 1000 },\n ),\n )\n },\n selectFeature(feature: Feature) {\n const session = getSession(self)\n if (isSessionModelWithWidgets(session)) {\n const featureWidget = session.addWidget(\n 'AlignmentsFeatureWidget',\n 'alignmentFeature',\n { featureData: feature.toJSON(), view: getContainingView(self) },\n )\n session.showWidget(featureWidget)\n }\n session.setSelection(feature)\n },\n\n clearSelected() {\n self.sortedBy = undefined\n },\n\n // uses copy-to-clipboard and generates notification\n copyFeatureToClipboard(feature: Feature) {\n const { uniqueId, ...rest } = feature.toJSON()\n const session = getSession(self)\n copy(JSON.stringify(rest, null, 4))\n session.notify('Copied to clipboard', 'success')\n },\n\n toggleSoftClipping() {\n self.showSoftClipping = !self.showSoftClipping\n },\n toggleMismatchAlpha() {\n self.mismatchAlpha = !self.mismatchAlpha\n },\n\n setConfig(configuration: AnyConfigurationModel) {\n self.configuration = configuration\n },\n\n setSortedBy(type: string, tag?: string) {\n const { centerLineInfo } = getContainingView(self) as LGV\n if (!centerLineInfo) {\n return\n }\n const { refName, assemblyName, offset } = centerLineInfo\n const centerBp = Math.round(offset) + 1\n const centerRefName = refName\n\n if (centerBp < 0) {\n return\n }\n\n self.sortedBy = {\n type,\n pos: centerBp,\n refName: centerRefName,\n assemblyName,\n tag,\n }\n self.ready = false\n },\n setFilterBy(filter: {\n flagInclude: number\n flagExclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }) {\n self.filterBy = cast(filter)\n },\n }))\n .actions(self => {\n // resets the sort object and refresh whole display on reload\n const superReload = self.reload\n\n return {\n reload() {\n self.clearSelected()\n superReload()\n },\n }\n })\n\n .views(self => ({\n get maxHeight() {\n const conf = getConf(self, ['renderers', self.rendererTypeName]) || {}\n return self.trackMaxHeight !== undefined\n ? self.trackMaxHeight\n : conf.maxHeight\n },\n get rendererConfig() {\n const configBlob =\n getConf(self, ['renderers', self.rendererTypeName]) || {}\n return self.rendererType.configSchema.create(\n {\n ...configBlob,\n height: self.featureHeight,\n noSpacing: self.noSpacing,\n maxHeight: this.maxHeight,\n mismatchAlpha: self.mismatchAlpha,\n },\n getEnv(self),\n )\n },\n get featureHeightSetting() {\n return (\n self.featureHeight || readConfObject(this.rendererConfig, 'height')\n )\n },\n get mismatchAlphaSetting() {\n return self.mismatchAlpha !== undefined\n ? self.mismatchAlpha\n : readConfObject(this.rendererConfig, 'mismatchAlpha')\n },\n }))\n .views(self => {\n const {\n trackMenuItems: superTrackMenuItems,\n renderProps: superRenderProps,\n } = self\n\n return {\n get rendererTypeName() {\n const viewName = getConf(self, 'defaultRendering')\n const rendererType = rendererTypes.get(viewName)\n if (!rendererType) {\n throw new Error(`unknown alignments view name ${viewName}`)\n }\n return rendererType\n },\n\n contextMenuItems() {\n const feat = self.contextMenuFeature\n const contextMenuItems = feat\n ? [\n {\n label: 'Open feature details',\n icon: MenuOpenIcon,\n onClick: () => {\n self.clearFeatureSelection()\n if (feat) {\n self.selectFeature(feat)\n }\n },\n },\n {\n label: 'Copy info to clipboard',\n icon: ContentCopyIcon,\n onClick: () => {\n if (feat) {\n self.copyFeatureToClipboard(feat)\n }\n },\n },\n ]\n : []\n return contextMenuItems\n },\n\n get DisplayBlurb() {\n return LinearPileupDisplayBlurb\n },\n\n get filters() {\n let filters: string[] = []\n const { flagInclude, flagExclude, tagFilter, readName } =\n self.filterBy\n\n filters = [\n `jexl:((get(feature,'flags')&${flagInclude})==${flagInclude}) && !(get(feature,'flags')&${flagExclude})`,\n ]\n if (tagFilter) {\n const { tag, value } = tagFilter\n filters.push(\n `jexl:\"${value}\" =='*' ? getTag(feature,\"${tag}\") != undefined : getTag(feature,\"${tag}\") == \"${value}\"`,\n )\n }\n if (readName) {\n filters.push(`jexl:get(feature,'name') == \"${readName}\"`)\n }\n return new SerializableFilterChain({ filters })\n },\n\n renderProps() {\n const view = getContainingView(self) as LGV\n const {\n colorTagMap,\n modificationTagMap,\n sortedBy,\n colorBy,\n rpcDriverName,\n } = self\n\n const superProps = superRenderProps()\n\n return {\n ...superProps,\n notReady:\n superProps.notReady ||\n !self.ready ||\n (sortedBy && self.currBpPerPx !== view.bpPerPx),\n rpcDriverName,\n displayModel: self,\n sortedBy,\n colorBy,\n colorTagMap: JSON.parse(JSON.stringify(colorTagMap)),\n modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),\n filters: this.filters,\n showSoftClip: self.showSoftClipping,\n config: self.rendererConfig,\n }\n },\n\n trackMenuItems() {\n return [\n ...superTrackMenuItems(),\n {\n label: 'Show soft clipping',\n icon: VisibilityIcon,\n type: 'checkbox',\n checked: self.showSoftClipping,\n onClick: () => {\n self.toggleSoftClipping()\n // if toggling from off to on, will break sort for this track\n // so clear it\n if (self.showSoftClipping) {\n self.clearSelected()\n }\n },\n },\n {\n label: 'Sort by',\n icon: SortIcon,\n disabled: self.showSoftClipping,\n subMenu: [\n ...['Start location', 'Read strand', 'Base pair'].map(\n option => {\n return {\n label: option,\n onClick: () => self.setSortedBy(option),\n }\n },\n ),\n {\n label: 'Sort by tag...',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SortByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Clear sort',\n onClick: () => self.clearSelected(),\n },\n ],\n },\n {\n label: 'Color scheme',\n icon: PaletteIcon,\n subMenu: [\n {\n label: 'Normal',\n onClick: () => {\n self.setColorScheme({ type: 'normal' })\n },\n },\n {\n label: 'Mapping quality',\n onClick: () => {\n self.setColorScheme({ type: 'mappingQuality' })\n },\n },\n {\n label: 'Strand',\n onClick: () => {\n self.setColorScheme({ type: 'strand' })\n },\n },\n {\n label: 'Pair orientation',\n onClick: () => {\n self.setColorScheme({ type: 'pairOrientation' })\n },\n },\n {\n label: 'Per-base quality',\n onClick: () => {\n self.setColorScheme({ type: 'perBaseQuality' })\n },\n },\n {\n label: 'Modifications or methylation',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n ModificationsDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Insert size',\n onClick: () => {\n self.setColorScheme({ type: 'insertSize' })\n },\n },\n {\n label: 'Stranded paired-end',\n onClick: () => {\n self.setColorScheme({ type: 'reverseTemplate' })\n },\n },\n {\n label: 'Color by tag...',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n ColorByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n ],\n },\n {\n label: 'Filter by',\n icon: FilterListIcon,\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n FilterByTagDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Set feature height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetFeatureHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Set max height',\n onClick: () => {\n getSession(self).queueDialog(doneCallback => [\n SetMaxHeightDlg,\n { model: self, handleClose: doneCallback },\n ])\n },\n },\n {\n label: 'Fade mismatches by quality',\n type: 'checkbox',\n checked: self.mismatchAlphaSetting,\n onClick: () => {\n self.toggleMismatchAlpha()\n },\n },\n ]\n },\n }\n })\n\nexport type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>\nexport type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>\n\nexport default stateModelFactory\n","import configSchemaFactory from './configSchema'\nimport modelFactory from './model'\nimport DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view'\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addDisplayType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n return new DisplayType({\n name: 'LinearPileupDisplay',\n configSchema,\n stateModel: modelFactory(configSchema),\n trackType: 'AlignmentsTrack',\n viewType: 'LinearGenomeView',\n ReactComponent: BaseLinearDisplayComponent,\n })\n })\n}\n","import PluginManager from '@jbrowse/core/PluginManager'\nimport TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport {\n createBaseTrackConfig,\n createBaseTrackModel,\n} from '@jbrowse/core/pluggableElementTypes/models'\nfunction configSchemaFactory(pluginManager: PluginManager) {\n return ConfigurationSchema(\n 'AlignmentsTrack',\n {},\n { baseConfiguration: createBaseTrackConfig(pluginManager) },\n )\n}\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addTrackType(() => {\n const configSchema = configSchemaFactory(pluginManager)\n const track = new TrackType({\n name: 'AlignmentsTrack',\n configSchema,\n stateModel: createBaseTrackModel(\n pluginManager,\n 'AlignmentsTrack',\n configSchema,\n ),\n })\n const linearAlignmentsDisplay = pluginManager.getDisplayType(\n 'LinearAlignmentsDisplay',\n )\n // Add LinearAlignmentsDisplay here so that it has priority over the other\n // linear displays (defaults to order the displays are added, but we have\n // to add the Pileup and SNPCoverage displays first).\n track.addDisplayType(linearAlignmentsDisplay)\n return track\n })\n}\n","import { lazy } from 'react'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport { ConfigurationSchema } from '@jbrowse/core/configuration'\nimport { ElementId } from '@jbrowse/core/util/types/mst'\nimport { types } from 'mobx-state-tree'\nimport WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'\n\nconst configSchema = ConfigurationSchema('AlignmentsFeatureWidget', {})\n\nexport function stateModelFactory(pluginManager: PluginManager) {\n return types\n .model('AlignmentsFeatureWidget', {\n id: ElementId,\n type: types.literal('AlignmentsFeatureWidget'),\n featureData: types.frozen(),\n view: types.safeReference(\n pluginManager.pluggableMstType('view', 'stateModel'),\n ),\n })\n .actions(self => ({\n setFeatureData(data: unknown) {\n self.featureData = data\n },\n clearFeatureData() {\n self.featureData = undefined\n },\n }))\n}\n\nexport default function register(pluginManager: PluginManager) {\n pluginManager.addWidgetType(\n () =>\n new WidgetType({\n name: 'AlignmentsFeatureWidget',\n heading: 'Feature details',\n configSchema,\n stateModel: stateModelFactory(pluginManager),\n ReactComponent: lazy(() => import('./AlignmentsFeatureDetail')),\n }),\n )\n}\n\nexport { configSchema }\n","import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'\nimport { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'\nimport { renameRegionsIfNeeded } from '@jbrowse/core/util'\nimport { Region } from '@jbrowse/core/util/types'\nimport { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'\nimport { toArray } from 'rxjs/operators'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { getTagAlt } from '../util'\nimport { getModificationTypes } from '../BamAdapter/MismatchParser'\n\nexport class PileupGetGlobalValueForTag extends RpcMethodType {\n name = 'PileupGetGlobalValueForTag'\n\n async serializeArguments(\n args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },\n rpcDriverClassName: string,\n ) {\n const { rootModel } = this.pluginManager\n const assemblyManager = rootModel?.session?.assemblyManager\n if (!assemblyManager) {\n throw new Error('no assembly manager available')\n }\n\n const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n return super.serializeArguments(renamedArgs, rpcDriverClassName)\n }\n\n async execute(\n args: {\n adapterConfig: {}\n signal?: RemoteAbortSignal\n headers?: Record<string, string>\n regions: Region[]\n sessionId: string\n tag: string\n },\n rpcDriverClassName: string,\n ) {\n const deserializedArgs = await this.deserializeArguments(\n args,\n rpcDriverClassName,\n )\n const { adapterConfig, sessionId, regions, tag } = deserializedArgs\n const dataAdapter = (\n await getAdapter(this.pluginManager, sessionId, adapterConfig)\n ).dataAdapter as BaseFeatureDataAdapter\n\n const features = dataAdapter.getFeaturesInMultipleRegions(regions)\n const featuresArray = await features.pipe(toArray()).toPromise()\n const uniqueValues = new Set<string>()\n featuresArray.forEach(feature => {\n const tags = feature.get('tags')\n const val = tags ? tags[tag] : feature.get(tag)\n if (val !== undefined) {\n uniqueValues.add(`${val}`)\n }\n })\n return [...uniqueValues]\n }\n}\n\nexport class PileupGetVisibleModifications extends RpcMethodType {\n name = 'PileupGetVisibleModifications'\n\n async serializeArguments(\n args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },\n rpcDriverClassName: string,\n ) {\n const { rootModel } = this.pluginManager\n const assemblyManager = rootModel?.session?.assemblyManager\n if (!assemblyManager) {\n throw new Error('no assembly manager available')\n }\n\n const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args)\n\n return super.serializeArguments(renamedArgs, rpcDriverClassName)\n }\n\n async execute(\n args: {\n adapterConfig: {}\n signal?: RemoteAbortSignal\n headers?: Record<string, string>\n regions: Region[]\n sessionId: string\n tag: string\n },\n rpcDriverClassName: string,\n ) {\n const deserializedArgs = await this.deserializeArguments(\n args,\n rpcDriverClassName,\n )\n const { adapterConfig, sessionId, regions } = deserializedArgs\n const dataAdapter = (\n await getAdapter(this.pluginManager, sessionId, adapterConfig)\n ).dataAdapter as BaseFeatureDataAdapter\n\n const features = dataAdapter.getFeaturesInMultipleRegions(regions)\n const featuresArray = await features.pipe(toArray()).toPromise()\n const uniqueValues = new Set<string>()\n featuresArray.forEach(feature => {\n const val = (getTagAlt(feature, 'MM', 'Mm') as string) || ''\n if (val !== undefined) {\n getModificationTypes(val).forEach(t => uniqueValues.add(t))\n }\n })\n return [...uniqueValues]\n }\n}\n","import { FileLocation } from '@jbrowse/core/util/types'\nimport Plugin from '@jbrowse/core/Plugin'\nimport PluginManager from '@jbrowse/core/PluginManager'\nimport * as MismatchParser from './BamAdapter/MismatchParser'\nimport { LinearPileupDisplayModel } from './LinearPileupDisplay/model'\n\nimport BamAdapterF from './CramAdapter'\nimport CramAdapterF from './BamAdapter'\nimport HtsgetBamAdapterF from './HtsgetBamAdapter'\nimport SNPCoverageAdapterF from './SNPCoverageAdapter'\nimport SNPCoverageRendererF from './SNPCoverageRenderer'\nimport PileupRendererF from './PileupRenderer'\nimport LinearAlignmentsDisplayF from './LinearAlignmentsDisplay'\nimport LinearSNPCoverageDisplayF from './LinearSNPCoverageDisplay'\nimport LinearPileupDisplayF from './LinearPileupDisplay'\nimport AlignmentsTrackF from './AlignmentsTrack'\nimport AlignmentsFeatureWidgetF from './AlignmentsFeatureDetail'\n\nimport {\n PileupGetGlobalValueForTag,\n PileupGetVisibleModifications,\n} from './PileupRPC/rpcMethods'\nimport {\n makeIndex,\n makeIndexType,\n getFileName,\n AdapterGuesser,\n TrackTypeGuesser,\n} from '@jbrowse/core/util/tracks'\n\nexport { MismatchParser }\nexport type { LinearPileupDisplayModel }\n\nexport default class AlignmentsPlugin extends Plugin {\n name = 'AlignmentsPlugin'\n\n install(pluginManager: PluginManager) {\n ;[\n CramAdapterF,\n BamAdapterF,\n LinearPileupDisplayF,\n LinearSNPCoverageDisplayF,\n AlignmentsTrackF,\n SNPCoverageAdapterF,\n HtsgetBamAdapterF,\n PileupRendererF,\n SNPCoverageRendererF,\n LinearAlignmentsDisplayF,\n AlignmentsFeatureWidgetF,\n ].map(f => f(pluginManager))\n\n pluginManager.addToExtensionPoint(\n 'Core-guessAdapterForLocation',\n (adapterGuesser: AdapterGuesser) => {\n return (\n file: FileLocation,\n index?: FileLocation,\n adapterHint?: string,\n ) => {\n const regexGuess = /\\.cram$/i\n const adapterName = 'CramAdapter'\n const fileName = getFileName(file)\n const obj = {\n type: adapterName,\n cramLocation: file,\n craiLocation: index || makeIndex(file, '.crai'),\n }\n if (regexGuess.test(fileName) && !adapterHint) {\n return obj\n } else if (adapterHint === adapterName) {\n return obj\n }\n return adapterGuesser(file, index, adapterHint)\n }\n },\n )\n\n pluginManager.addToExtensionPoint(\n 'Core-guessAdapterForLocation',\n (adapterGuesser: AdapterGuesser) => {\n return (\n file: FileLocation,\n index?: FileLocation,\n adapterHint?: string,\n ) => {\n const regexGuess = /\\.bam$/i\n const adapterName = 'BamAdapter'\n const fileName = getFileName(file)\n const indexName = index && getFileName(index)\n\n const obj = {\n type: adapterName,\n bamLocation: file,\n index: {\n location: index || makeIndex(file, '.bai'),\n indexType: makeIndexType(indexName, 'CSI', 'BAI'),\n },\n }\n if (regexGuess.test(fileName) && !adapterHint) {\n return obj\n } else if (adapterHint === adapterName) {\n return obj\n }\n return adapterGuesser(file, index, adapterHint)\n }\n },\n )\n pluginManager.addToExtensionPoint(\n 'Core-guessTrackTypeForLocation',\n (trackTypeGuesser: TrackTypeGuesser) => {\n return (adapterName: string) => {\n if (adapterName === 'BamAdapter' || adapterName === 'CramAdapter') {\n return 'AlignmentsTrack'\n }\n return trackTypeGuesser(adapterName)\n }\n },\n )\n\n pluginManager.addRpcMethod(\n () => new PileupGetGlobalValueForTag(pluginManager),\n )\n pluginManager.addRpcMethod(\n () => new PileupGetVisibleModifications(pluginManager),\n )\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {\n Feature,\n SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\n\nimport CramAdapter from './CramAdapter'\n\nexport interface Mismatch {\n qual?: number\n start: number\n length: number\n type: string\n base: string\n altbase?: string\n seq?: string\n cliplen?: number\n}\n\nexport default class CramSlightlyLazyFeature implements Feature {\n private _store: CramAdapter\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private record: any, store: CramAdapter) {\n this._store = store\n }\n\n _get_name() {\n return this.record.readName\n }\n\n _get_start() {\n return this.record.alignmentStart - 1\n }\n\n _get_end() {\n return this.record.alignmentStart + this.record.lengthOnRef - 1\n }\n\n _get_cram_read_features() {\n return this.record.readFeatures\n }\n\n _get_type() {\n return 'match'\n }\n\n _get_score() {\n return this.record.mappingQuality\n }\n\n _get_flags() {\n return this.record.flags\n }\n\n _get_strand() {\n return this.record.isReverseComplemented() ? -1 : 1\n }\n\n _read_group_id() {\n const rg = this._store.samHeader.readGroups\n return rg ? rg[this.record.readGroupId] : undefined\n }\n\n _get_qual() {\n return (this.record.qualityScores || []).join(' ')\n }\n\n qualRaw() {\n return this.record.qualityScores\n }\n\n _get_seq_id() {\n return this._store.refIdToName(this.record.sequenceId)\n }\n\n _get_refName() {\n return this._get_seq_id()\n }\n\n _get_is_paired() {\n return !!this.record.mate\n }\n\n _get_pair_orientation() {\n return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n }\n\n _get_template_length() {\n return this.record.templateLength || this.record.templateSize\n }\n\n _get_next_seq_id() {\n return this.record.mate\n ? this._store.refIdToName(this.record.mate.sequenceId)\n : undefined\n }\n\n _get_next_pos() {\n return this.record.mate ? this.record.mate.alignmentStart : undefined\n }\n\n _get_next_segment_position() {\n return this.record.mate\n ? `${this._store.refIdToName(this.record.mate.sequenceId)}:${\n this.record.mate.alignmentStart\n }`\n : undefined\n }\n\n _get_tags() {\n const RG = this._read_group_id()\n const { tags } = this.record\n // avoids a tag copy if no RG, but just copy if there is one\n return RG !== undefined ? { ...tags, RG } : tags\n }\n\n _get_seq() {\n return this.record.getReadBases()\n }\n\n // generate a CIGAR, based on code from jkbonfield\n _get_CIGAR() {\n let seq = ''\n let cigar = ''\n let op = 'M'\n let oplen = 0\n\n // not sure I should access these, but...\n const ref = this.record._refRegion.seq\n const refStart = this.record._refRegion.start\n let last_pos = this.record.alignmentStart\n let sublen = 0\n if (typeof this.record.readFeatures !== 'undefined') {\n // @ts-ignore\n this.record.readFeatures.forEach(({ code, refPos, sub, data }) => {\n sublen = refPos - last_pos\n seq += ref.substring(last_pos - refStart, refPos - refStart)\n last_pos = refPos\n\n if (oplen && op !== 'M') {\n cigar += oplen + op\n oplen = 0\n }\n if (sublen) {\n op = 'M'\n oplen += sublen\n }\n\n if (code === 'b') {\n // An array of bases stored verbatim\n const ret = data.split(',')\n const added = String.fromCharCode(...ret)\n seq += added\n last_pos += added.length\n oplen += added.length\n } else if (code === 'B') {\n // Single base (+ qual score)\n seq += sub\n last_pos++\n oplen++\n } else if (code === 'X') {\n // Substitution\n seq += sub\n last_pos++\n oplen++\n } else if (code === 'D' || code === 'N') {\n // Deletion or Ref Skip\n last_pos += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += data + code\n oplen = 0\n } else if (code === 'I' || code === 'S') {\n // Insertion or soft-clip\n seq += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += data.length + code\n oplen = 0\n } else if (code === 'i') {\n // Single base insertion\n seq += data\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${1}I`\n oplen = 0\n } else if (code === 'P') {\n // Padding\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${data}P`\n } else if (code === 'H') {\n // Hard clip\n if (oplen) {\n cigar += oplen + op\n }\n cigar += `${data}H`\n oplen = 0\n } // else q or Q\n })\n } else {\n sublen = this.record.readLength - seq.length\n }\n if (seq.length !== this.record.readLength) {\n sublen = this.record.readLength - seq.length\n seq += ref.substring(last_pos - refStart, last_pos - refStart + sublen)\n\n if (oplen && op !== 'M') {\n cigar += oplen + op\n oplen = 0\n }\n op = 'M'\n oplen += sublen\n }\n if (oplen) {\n cigar += oplen + op\n }\n return cigar\n }\n\n tags() {\n const properties = Object.getOwnPropertyNames(\n CramSlightlyLazyFeature.prototype,\n )\n return properties\n .filter(\n prop =>\n prop.startsWith('_get_') &&\n prop !== '_get_mismatches' &&\n prop !== '_get_skips_and_dels' &&\n prop !== '_get_cram_read_features',\n )\n .map(methodName => methodName.replace('_get_', ''))\n }\n\n id() {\n return `${this._store.id}-${this.record.uniqueId}`\n }\n\n get(field: string) {\n const methodName = `_get_${field}`\n // @ts-ignore\n if (this[methodName]) {\n // @ts-ignore\n return this[methodName]()\n }\n return undefined\n }\n\n parent(): undefined | Feature {\n return undefined\n }\n\n children(): undefined | Feature[] {\n return undefined\n }\n\n set(): void {}\n\n pairedFeature() {\n return false\n }\n\n _get_clipPos() {\n const mismatches = this.get('mismatches')\n if (mismatches.length) {\n const record =\n this.get('strand') === -1\n ? mismatches[mismatches.length - 1]\n : mismatches[0]\n const { type, cliplen } = record\n if (type === 'softclip' || type === 'hardclip') {\n return cliplen\n }\n }\n return 0\n }\n\n toJSON(): SimpleFeatureSerialized {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tags: Record<string, any> = {}\n this.tags().forEach((t: string) => {\n const val = this.get(t)\n if (val !== undefined) {\n tags[t] = val\n }\n })\n\n return {\n ...tags,\n name: this.get('name'),\n type: this.get('type'),\n uniqueId: this.id(),\n }\n }\n\n _get_mismatches(): Mismatch[] {\n const readFeatures = this.get('cram_read_features')\n const qual = this.qualRaw()\n if (!readFeatures) {\n return []\n }\n const start = this.get('start')\n const mismatches: Mismatch[] = []\n readFeatures.forEach(\n (args: {\n code: string\n refPos: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any\n pos: number\n sub: string\n ref: string\n }) => {\n const { code, pos, data, sub, ref } = args\n const refPos = args.refPos - 1 - start\n if (code === 'X') {\n // substitution\n mismatches.push({\n start: refPos,\n length: 1,\n base: sub,\n qual: qual?.[pos],\n altbase: ref,\n type: 'mismatch',\n })\n } else if (code === 'I') {\n // insertion\n mismatches.push({\n start: refPos,\n type: 'insertion',\n base: `${data.length}`,\n length: 0,\n })\n } else if (code === 'N') {\n // reference skip\n mismatches.push({\n type: 'skip',\n length: data,\n start: refPos,\n base: 'N',\n })\n } else if (code === 'S') {\n // soft clip\n const len = data.length\n mismatches.push({\n start: refPos,\n type: 'softclip',\n base: `S${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (code === 'P') {\n // padding\n } else if (code === 'H') {\n // hard clip\n const len = data\n mismatches.push({\n start: refPos,\n type: 'hardclip',\n base: `H${len}`,\n cliplen: len,\n length: 1,\n })\n } else if (code === 'D') {\n // deletion\n mismatches.push({\n type: 'deletion',\n length: data,\n start: refPos,\n base: '*',\n })\n } else if (code === 'b') {\n // stretch of bases\n } else if (code === 'q') {\n // stretch of qual scores\n } else if (code === 'B') {\n // a pair of [base, qual]\n } else if (code === 'i') {\n // single-base insertion\n // insertion\n mismatches.push({\n start: refPos,\n type: 'insertion',\n base: data,\n length: 1,\n })\n } else if (code === 'Q') {\n // single quality value\n }\n },\n )\n return mismatches\n }\n\n _get_skips_and_dels(): Mismatch[] {\n return this._get_mismatches()\n }\n}\n","import { CraiIndex, IndexedCramFile } from '@gmod/cram'\nimport {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport { checkAbortSignal } from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { toArray } from 'rxjs/operators'\nimport CramSlightlyLazyFeature from './CramSlightlyLazyFeature'\n\ninterface HeaderLine {\n tag: string\n value: any // eslint-disable-line @typescript-eslint/no-explicit-any\n data: HeaderLine[]\n}\ninterface Header {\n idToName?: string[]\n nameToId?: Record<string, number>\n readGroups?: number[]\n}\n\nexport default class CramAdapter extends BaseFeatureDataAdapter {\n samHeader: Header = {}\n\n private setupP?: Promise<{\n samHeader: Header\n cram: any // eslint-disable-line @typescript-eslint/no-explicit-any\n sequenceAdapter: any // eslint-disable-line @typescript-eslint/no-explicit-any\n }>\n\n // maps a refname to an id\n private seqIdToRefName: string[] | undefined\n\n // maps a seqId to original refname, passed specially to render args, to a seqid\n private seqIdToOriginalRefName: string[] = []\n\n public async configure() {\n const cramLocation = readConfObject(this.config, 'cramLocation')\n const craiLocation = readConfObject(this.config, 'craiLocation')\n if (!cramLocation) {\n throw new Error('missing cramLocation argument')\n }\n if (!craiLocation) {\n throw new Error('missing craiLocation argument')\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cram: any = new IndexedCramFile({\n cramFilehandle: openLocation(cramLocation, this.pluginManager),\n index: new CraiIndex({\n filehandle: openLocation(craiLocation, this.pluginManager),\n }),\n seqFetch: this.seqFetch.bind(this),\n checkSequenceMD5: false,\n fetchSizeLimit: 200_000_000, // just make this a large size to avoid hitting it\n })\n // instantiate the sequence adapter\n const sequenceAdapterType = readConfObject(this.config, [\n 'sequenceAdapter',\n 'type',\n ])\n\n if (!this.getSubAdapter) {\n throw new Error('Error getting subadapter')\n }\n\n const seqConf = readConfObject(this.config, 'sequenceAdapter')\n const { dataAdapter: sequenceAdapter } = await this.getSubAdapter(seqConf)\n\n if (!(sequenceAdapter instanceof BaseFeatureDataAdapter)) {\n throw new Error(\n `CRAM feature adapters cannot use sequence adapters of type '${sequenceAdapterType}'`,\n )\n }\n\n return { cram, sequenceAdapter }\n }\n\n async getHeader(opts?: BaseOptions) {\n const { cram } = await this.configure()\n return cram.cram.getHeaderText(opts)\n }\n\n private async seqFetch(seqId: number, start: number, end: number) {\n start -= 1 // convert from 1-based closed to interbase\n\n const { sequenceAdapter } = await this.configure()\n const refName = this.refIdToOriginalName(seqId) || this.refIdToName(seqId)\n if (!refName) {\n return undefined\n }\n\n const seqChunks = await sequenceAdapter\n .getFeatures({\n refName,\n start,\n end,\n assemblyName: '',\n })\n .pipe(toArray())\n .toPromise()\n\n const sequence = seqChunks\n .sort((a, b) => a.get('start') - b.get('start'))\n .map(chunk => {\n const chunkStart = chunk.get('start')\n const chunkEnd = chunk.get('end')\n const trimStart = Math.max(start - chunkStart, 0)\n const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n const trimLength = trimEnd - trimStart\n const chunkSeq = chunk.get('seq') || chunk.get('residues')\n return chunkSeq.substr(trimStart, trimLength)\n })\n .join('')\n\n if (sequence.length !== end - start) {\n throw new Error(\n `sequence fetch failed: fetching ${refName}:${(\n start - 1\n ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n end - start\n ).toLocaleString()}`,\n )\n }\n return sequence\n }\n\n private async setupPre(opts?: BaseOptions) {\n const { statusCallback = () => {} } = opts || {}\n const configured = await this.configure()\n statusCallback('Downloading index')\n const { cram } = configured\n const samHeader: HeaderLine[] = await cram.cram.getSamHeader(opts?.signal)\n\n // use the @SQ lines in the header to figure out the\n // mapping between ref ID numbers and names\n const idToName: string[] = []\n const nameToId: Record<string, number> = {}\n samHeader\n .filter(l => l.tag === 'SQ')\n .forEach((sqLine, refId) => {\n sqLine.data.forEach(item => {\n if (item.tag === 'SN') {\n // this is the ref name\n const refName = item.value\n nameToId[refName] = refId\n idToName[refId] = refName\n }\n })\n })\n\n const readGroups = samHeader\n .filter(l => l.tag === 'RG')\n .map(rgLine => rgLine.data.find(item => item.tag === 'ID')?.value)\n\n const data = { idToName, nameToId, readGroups }\n statusCallback('')\n this.samHeader = data\n return { samHeader: data, ...configured }\n }\n\n private async setup(opts?: BaseOptions) {\n if (!this.setupP) {\n this.setupP = this.setupPre(opts).catch(e => {\n this.setupP = undefined\n throw e\n })\n }\n return this.setupP\n }\n\n async getRefNames(opts?: BaseOptions) {\n const { samHeader } = await this.setup(opts)\n if (!samHeader.idToName) {\n throw new Error('CRAM file has no header lines')\n }\n return samHeader.idToName\n }\n\n // use info from the SAM header if possible, but fall back to using\n // the ref seq order from when the browser's refseqs were loaded\n refNameToId(refName: string) {\n if (this.samHeader.nameToId) {\n return this.samHeader.nameToId[refName]\n }\n if (this.seqIdToRefName) {\n return this.seqIdToRefName.indexOf(refName)\n }\n return undefined\n }\n\n // use info from the SAM header if possible, but fall back to using\n // the ref seq order from when the browser's refseqs were loaded\n refIdToName(refId: number) {\n if (this.samHeader.idToName) {\n return this.samHeader.idToName[refId]\n }\n if (this.seqIdToRefName) {\n return this.seqIdToRefName[refId]\n }\n return undefined\n }\n\n refIdToOriginalName(refId: number) {\n return this.seqIdToOriginalRefName[refId]\n }\n\n getFeatures(\n region: Region & { originalRefName?: string },\n opts?: BaseOptions,\n ) {\n const { signal, statusCallback = () => {} } = opts || {}\n const { refName, start, end, originalRefName } = region\n\n return ObservableCreate<Feature>(async observer => {\n const { cram, sequenceAdapter } = await this.setup(opts)\n statusCallback('Downloading alignments')\n if (!this.seqIdToRefName) {\n this.seqIdToRefName = await sequenceAdapter.getRefNames(opts)\n }\n const refId = this.refNameToId(refName)\n if (refId !== undefined) {\n if (originalRefName) {\n this.seqIdToOriginalRefName[refId] = originalRefName\n }\n const records = await cram.getRecordsForRange(refId, start, end, opts)\n checkAbortSignal(signal)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n records.forEach((record: any) => {\n observer.next(this.cramRecordToFeature(record))\n })\n } else {\n console.warn('Unknown refName', refName)\n }\n statusCallback('')\n observer.complete()\n }, signal)\n }\n\n freeResources(/* { region } */): void {}\n\n cramRecordToFeature(record: unknown) {\n return new CramSlightlyLazyFeature(record, this)\n }\n\n // we return the configured fetchSizeLimit, and the bytes for the region\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const bytes = await this.bytesForRegions(regions, opts)\n const fetchSizeLimit = readConfObject(this.config, 'fetchSizeLimit')\n return {\n bytes,\n fetchSizeLimit,\n }\n }\n\n /**\n * get the approximate number of bytes queried from the file for the given\n * query regions\n * @param regions - list of query regions\n */\n private async bytesForRegions(regions: Region[], _opts?: BaseOptions) {\n const { cram } = await this.configure()\n const blockResults = await Promise.all(\n regions.map(region => {\n const { refName, start, end } = region\n const chrId = this.refNameToId(refName)\n return cram.index.getEntriesForRange(chrId, start, end)\n }),\n )\n\n return blockResults.flat().reduce((a, b) => a + b.sliceBytes, 0)\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {\n Feature,\n SimpleFeatureSerialized,\n} from '@jbrowse/core/util/simpleFeature'\nimport { BamRecord } from '@gmod/bam'\nimport {\n parseCigar,\n generateMD,\n cigarToMismatches,\n mdToMismatches,\n Mismatch,\n} from './MismatchParser'\n\nimport BamAdapter from './BamAdapter'\n\nexport default class BamSlightlyLazyFeature implements Feature {\n private cachedMD = ''\n constructor(\n private record: BamRecord,\n private adapter: BamAdapter,\n private ref?: string,\n ) {}\n\n _get_name() {\n return this.record.get('name')\n }\n\n _get_type(): string {\n return 'match'\n }\n\n _get_score(): number {\n return this.record.get('mq')\n }\n\n _get_flags(): string {\n return this.record.flags\n }\n\n _get_strand(): number {\n return this.record.isReverseComplemented() ? -1 : 1\n }\n\n _get_pair_orientation() {\n return this.record.isPaired() ? this.record.getPairOrientation() : undefined\n }\n\n _get_next_seq_id() {\n return this.record._next_refid()\n }\n\n _get_seq_id() {\n // @ts-ignore\n return this.record._refID\n }\n\n _get_next_refName() {\n return this.adapter.refIdToName(this.record._next_refid())\n }\n\n _get_next_segment_position() {\n const { record, adapter } = this\n return record.isPaired()\n ? `${adapter.refIdToName(record._next_refid())}:${record._next_pos() + 1}`\n : undefined\n }\n\n _get_seq() {\n return this.record.getReadBases()\n }\n\n _get_MD() {\n const md = this.record.get('MD') || this.cachedMD\n if (!md) {\n const seq = this.get('seq')\n if (seq && this.ref) {\n this.cachedMD = generateMD(this.ref, this.get('seq'), this.get('CIGAR'))\n return this.cachedMD\n }\n }\n return md\n }\n\n qualRaw() {\n return this.record.qualRaw()\n }\n\n set() {}\n\n tags() {\n const properties = Object.getOwnPropertyNames(\n BamSlightlyLazyFeature.prototype,\n )\n\n return [\n ...new Set(\n properties\n .filter(\n prop =>\n prop.startsWith('_get_') &&\n prop !== '_get_mismatches' &&\n prop !== '_get_skips_and_dels' &&\n prop !== '_get_cram_read_features' &&\n prop !== '_get_tags' &&\n prop !== '_get_next_seq_id' &&\n prop !== '_get_seq_id',\n )\n .map(methodName => methodName.replace('_get_', ''))\n .concat(this.record._tags()),\n ),\n ]\n }\n\n id() {\n return `${this.adapter.id}-${this.record.id()}`\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(field: string): any {\n const methodName = `_get_${field}`\n // @ts-ignore\n if (this[methodName]) {\n // @ts-ignore\n return this[methodName]()\n }\n return this.record.get(field)\n }\n\n _get_refName() {\n return this.adapter.refIdToName(this.record.seq_id())\n }\n\n parent() {\n return undefined\n }\n\n children() {\n return undefined\n }\n\n pairedFeature() {\n return false\n }\n\n toJSON(): SimpleFeatureSerialized {\n return {\n ...Object.fromEntries(\n this.tags()\n .map(t => [t, this.get(t)])\n .filter(elt => elt[1] !== undefined),\n ),\n uniqueId: this.id(),\n }\n }\n\n _get_skips_and_dels(\n opts: {\n cigarAttributeName: string\n } = {\n cigarAttributeName: 'CIGAR',\n },\n ) {\n const { cigarAttributeName } = opts\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n const cigarString = this.get(cigarAttributeName)\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(\n cigarToMismatches(cigarOps, this.get('seq'), this.qualRaw()),\n )\n }\n return mismatches\n }\n\n _get_mismatches({\n cigarAttributeName = 'CIGAR',\n mdAttributeName = 'MD',\n }: {\n cigarAttributeName?: string\n mdAttributeName?: string\n } = {}) {\n let mismatches: Mismatch[] = []\n let cigarOps: string[] = []\n\n // parse the CIGAR tag if it has one\n const cigarString = this.get(cigarAttributeName)\n const seq = this.get('seq')\n const qual = this.qualRaw()\n if (cigarString) {\n cigarOps = parseCigar(cigarString)\n mismatches = mismatches.concat(cigarToMismatches(cigarOps, seq, qual))\n }\n\n // now let's look for CRAM or MD mismatches\n const mdString = this.get(mdAttributeName)\n if (mdString) {\n mismatches = mismatches.concat(\n mdToMismatches(mdString, cigarOps, mismatches, seq, qual),\n )\n }\n\n // uniqify the mismatches\n const seen: { [index: string]: boolean } = {}\n return mismatches.filter(m => {\n const key = `${m.type},${m.start},${m.length}`\n const s = seen[key]\n seen[key] = true\n return !s\n })\n }\n\n _get_clipPos() {\n const cigar = this.get('CIGAR') || ''\n return this.get('strand') === -1\n ? +(cigar.match(/(\\d+)[SH]$/) || [])[1] || 0\n : +(cigar.match(/^(\\d+)([SH])/) || [])[1] || 0\n }\n}\n","import { BamFile } from '@gmod/bam'\nimport {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { Region } from '@jbrowse/core/util/types'\nimport {\n checkAbortSignal,\n bytesForRegions,\n updateStatus,\n} from '@jbrowse/core/util'\nimport { openLocation } from '@jbrowse/core/util/io'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { Feature } from '@jbrowse/core/util/simpleFeature'\nimport { toArray } from 'rxjs/operators'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport BamSlightlyLazyFeature from './BamSlightlyLazyFeature'\n\ninterface Header {\n idToName: string[]\n nameToId: Record<string, number>\n}\n\nexport default class BamAdapter extends BaseFeatureDataAdapter {\n private samHeader?: Header\n\n private setupP?: Promise<Header>\n\n protected configured?: Promise<{\n bam: BamFile\n sequenceAdapter?: BaseFeatureDataAdapter\n }>\n\n // derived classes may not use the same configuration so a custom\n // configure method allows derived classes to override this behavior\n protected async configure() {\n if (!this.configured) {\n const bamLocation = readConfObject(this.config, 'bamLocation')\n const location = readConfObject(this.config, ['index', 'location'])\n const indexType = readConfObject(this.config, ['index', 'indexType'])\n const chunkSizeLimit = readConfObject(this.config, 'chunkSizeLimit')\n const bam = new BamFile({\n bamFilehandle: openLocation(bamLocation, this.pluginManager),\n csiFilehandle:\n indexType === 'CSI'\n ? openLocation(location, this.pluginManager)\n : undefined,\n baiFilehandle:\n indexType !== 'CSI'\n ? openLocation(location, this.pluginManager)\n : undefined,\n chunkSizeLimit,\n fetchSizeLimit: 100_000_000,\n })\n\n const adapterConfig = readConfObject(this.config, 'sequenceAdapter')\n if (adapterConfig && this.getSubAdapter) {\n this.configured = this.getSubAdapter(adapterConfig).then(\n ({ dataAdapter }) => ({\n bam,\n sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n }),\n )\n } else {\n this.configured = Promise.resolve({ bam })\n }\n }\n return this.configured\n }\n\n async getHeader(opts?: BaseOptions) {\n const { bam } = await this.configure()\n return bam.getHeaderText(opts)\n }\n\n private async setupPre(opts?: BaseOptions) {\n const { statusCallback = () => {} } = opts || {}\n const { bam } = await this.configure()\n this.samHeader = await updateStatus(\n 'Downloading index',\n statusCallback,\n async () => {\n const samHeader = await bam.getHeader(opts)\n\n // use the @SQ lines in the header to figure out the\n // mapping between ref ref ID numbers and names\n const idToName: string[] = []\n const nameToId: Record<string, number> = {}\n samHeader\n .filter(l => l.tag === 'SQ')\n .forEach((sqLine, refId) => {\n sqLine.data.forEach(item => {\n if (item.tag === 'SN') {\n // this is the ref name\n const refName = item.value\n nameToId[refName] = refId\n idToName[refId] = refName\n }\n })\n })\n\n return { idToName, nameToId }\n },\n )\n return this.samHeader\n }\n\n private async setup(opts?: BaseOptions) {\n if (!this.setupP) {\n this.setupP = this.setupPre(opts).catch(e => {\n this.setupP = undefined\n throw e\n })\n }\n return this.setupP\n }\n\n async getRefNames(opts?: BaseOptions) {\n const { idToName } = await this.setup(opts)\n return idToName\n }\n\n private async seqFetch(refName: string, start: number, end: number) {\n const { sequenceAdapter } = await this.configure()\n const refSeqStore = sequenceAdapter\n if (!refSeqStore) {\n return undefined\n }\n if (!refName) {\n return undefined\n }\n\n const features = refSeqStore.getFeatures({\n refName,\n start,\n end,\n assemblyName: '',\n })\n\n const seqChunks = await features.pipe(toArray()).toPromise()\n\n const trimmed: string[] = []\n seqChunks\n .sort((a, b) => a.get('start') - b.get('start'))\n .forEach(chunk => {\n const chunkStart = chunk.get('start')\n const chunkEnd = chunk.get('end')\n const trimStart = Math.max(start - chunkStart, 0)\n const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)\n const trimLength = trimEnd - trimStart\n const chunkSeq = chunk.get('seq') || chunk.get('residues')\n trimmed.push(chunkSeq.substr(trimStart, trimLength))\n })\n\n const sequence = trimmed.join('')\n if (sequence.length !== end - start) {\n throw new Error(\n `sequence fetch failed: fetching ${refName}:${(\n start - 1\n ).toLocaleString()}-${end.toLocaleString()} returned ${sequence.length.toLocaleString()} bases, but should have returned ${(\n end - start\n ).toLocaleString()}`,\n )\n }\n return sequence\n }\n\n getFeatures(\n region: Region & { originalRefName?: string },\n opts?: BaseOptions,\n ) {\n const { refName, start, end, originalRefName } = region\n const { signal, statusCallback = () => {} } = opts || {}\n return ObservableCreate<Feature>(async observer => {\n const { bam } = await this.configure()\n await this.setup(opts)\n statusCallback('Downloading alignments')\n const records = await bam.getRecordsForRange(refName, start, end, opts)\n\n checkAbortSignal(signal)\n\n for (const record of records) {\n let ref: string | undefined\n if (!record.get('md')) {\n ref = await this.seqFetch(\n originalRefName || refName,\n record.get('start'),\n record.get('end'),\n )\n }\n observer.next(new BamSlightlyLazyFeature(record, this, ref))\n }\n statusCallback('')\n observer.complete()\n }, signal)\n }\n\n async estimateRegionsStats(regions: Region[], opts?: BaseOptions) {\n const { bam } = await this.configure()\n // this is a method to avoid calling on htsget adapters\n // @ts-ignore\n if (bam.index.filehandle !== '?') {\n const bytes = await bytesForRegions(regions, bam)\n const fetchSizeLimit = readConfObject(this.config, 'fetchSizeLimit')\n return { bytes, fetchSizeLimit }\n } else {\n return super.estimateRegionsStats(regions, opts)\n }\n }\n\n freeResources(/* { region } */): void {}\n\n // depends on setup being called before the BAM constructor\n refIdToName(refId: number): string | undefined {\n return this.samHeader?.idToName[refId]\n }\n}\n","import { BamFile, HtsgetFile } from '@gmod/bam'\nimport { readConfObject } from '@jbrowse/core/configuration'\nimport { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport BamAdapter from '../BamAdapter/BamAdapter'\n\nexport default class HtsgetBamAdapter extends BamAdapter {\n protected async configure() {\n if (!this.configured) {\n const htsgetBase = readConfObject(this.config, 'htsgetBase')\n const htsgetTrackId = readConfObject(this.config, 'htsgetTrackId')\n const bam = new HtsgetFile({\n baseUrl: htsgetBase,\n trackId: htsgetTrackId,\n }) as unknown as BamFile\n\n const adapterConfig = readConfObject(this.config, 'sequenceAdapter')\n if (adapterConfig && this.getSubAdapter) {\n this.configured = this.getSubAdapter(adapterConfig).then(\n ({ dataAdapter }) => {\n return {\n bam,\n sequenceAdapter: dataAdapter as BaseFeatureDataAdapter,\n }\n },\n )\n }\n this.configured = Promise.resolve({ bam })\n }\n return this.configured\n }\n}\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 300,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction ColorByTagDlg(props: {\n model: { setColorScheme: Function }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const [tag, setTag] = useState('')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Color by tag\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent style={{ overflowX: 'hidden' }}>\n <div className={classes.root}>\n <Typography>Enter tag to color by: </Typography>\n <Typography color=\"textSecondary\">\n Examples: XS or TS for RNA-seq inferred read strand, ts (lower-case)\n for minimap2 read strand, HP for haplotype, RG for read group, etc.\n </Typography>\n\n <TextField\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'color-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n autoComplete=\"off\"\n data-testid=\"color-tag-name\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ marginLeft: 20 }}\n onClick={() => {\n model.setColorScheme({\n type: 'tag',\n tag,\n })\n handleClose()\n }}\n disabled={!validTag}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(ColorByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Link,\n Paper,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n paper: {\n padding: theme.spacing(2),\n margin: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nconst flagNames = [\n 'read paired',\n 'read mapped in proper pair',\n 'read unmapped',\n 'mate unmapped',\n 'read reverse strand',\n 'mate reverse strand',\n 'first in pair',\n 'second in pair',\n 'not primary alignment',\n 'read fails platform/vendor quality checks',\n 'read is PCR or optical duplicate',\n 'supplementary alignment',\n]\n\nfunction Bitmask(props: { flag?: number; setFlag: Function }) {\n const { flag = 0, setFlag } = props\n return (\n <>\n <TextField\n type=\"number\"\n value={flag}\n onChange={event => setFlag(+event.target.value)}\n />\n {flagNames.map((name, index) => {\n const val = flag & (1 << index)\n const key = `${name}_${val}`\n return (\n <div key={key}>\n <input\n type=\"checkbox\"\n checked={Boolean(val)}\n onChange={event => {\n if (event.target.checked) {\n setFlag(flag | (1 << index))\n } else {\n setFlag(flag & ~(1 << index))\n }\n }}\n />\n <label htmlFor={key}>{name}</label>\n </div>\n )\n })}\n </>\n )\n}\n\nfunction FilterByTagDlg(props: {\n model: {\n filterBy?: {\n flagExclude: number\n flagInclude: number\n readName?: string\n tagFilter?: { tag: string; value: string }\n }\n setFilterBy: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { filterBy } = model\n const [flagInclude, setFlagInclude] = useState(filterBy?.flagInclude)\n const [flagExclude, setFlagExclude] = useState(filterBy?.flagExclude)\n const [tag, setTag] = useState(filterBy?.tagFilter?.tag || '')\n const [tagValue, setTagValue] = useState(filterBy?.tagFilter?.value || '')\n const [readName, setReadName] = useState(filterBy?.readName || '')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n\n const site = 'https://broadinstitute.github.io/picard/explain-flags.html'\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Typography>\n Set filter bitmask options. Refer to <Link href={site}>{site}</Link>{' '}\n for details\n </Typography>\n <div className={classes.root}>\n <Paper className={classes.paper} variant=\"outlined\">\n <div style={{ display: 'flex' }}>\n <div>\n <Typography>Read must have ALL these flags</Typography>\n <Bitmask flag={flagInclude} setFlag={setFlagInclude} />\n </div>\n <div>\n <Typography>Read must have NONE of these flags</Typography>\n <Bitmask flag={flagExclude} setFlag={setFlagExclude} />\n </div>\n </div>\n </Paper>\n <Paper className={classes.paper} variant=\"outlined\">\n <Typography>\n Filter by tag name and value. Use * in the value field to get all\n reads containing any value for that tag. Example: filter tag name\n SA with value * to get all split/supplementary reads. Other\n examples include HP for haplotype, or RG for read group\n </Typography>\n <TextField\n className={classes.field}\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'color-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={\n tag.length === 2 && !validTag ? 'Not a valid tag' : ''\n }\n data-testid=\"color-tag-name\"\n />\n <TextField\n className={classes.field}\n value={tagValue}\n onChange={event => {\n setTagValue(event.target.value)\n }}\n placeholder=\"Enter tag value\"\n inputProps={{\n 'data-testid': 'color-tag-name-input',\n }}\n data-testid=\"color-tag-value\"\n />\n </Paper>\n <Paper className={classes.paper} variant=\"outlined\">\n <Typography>Filter by read name</Typography>\n <TextField\n className={classes.field}\n value={readName}\n onChange={event => {\n setReadName(event.target.value)\n }}\n placeholder=\"Enter read name\"\n inputProps={{\n 'data-testid': 'color-tag-readname-input',\n }}\n data-testid=\"color-tag-readname\"\n />\n </Paper>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n model.setFilterBy({\n flagInclude,\n flagExclude,\n readName,\n tagFilter:\n tag !== ''\n ? {\n tag,\n value: tagValue,\n }\n : undefined,\n })\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(FilterByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction SortByTagDlg(props: {\n model: { setSortedBy: Function }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const [tag, setTag] = useState('')\n const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Sort by tag\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div>\n <Typography>Set the tag to sort by</Typography>\n <Typography color=\"textSecondary\">\n Examples: HP for haplotype, RG for read group, etc.\n </Typography>\n <TextField\n value={tag}\n onChange={event => {\n setTag(event.target.value)\n }}\n placeholder=\"Enter tag name\"\n inputProps={{\n maxLength: 2,\n 'data-testid': 'sort-tag-name-input',\n }}\n error={tag.length === 2 && !validTag}\n helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}\n autoComplete=\"off\"\n data-testid=\"sort-tag-name\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n model.setSortedBy('tag', tag)\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\nexport default observer(SortByTagDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n TextField,\n Typography,\n IconButton,\n Dialog,\n DialogContent,\n DialogTitle,\n Checkbox,\n FormControlLabel,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n margin: theme.spacing(4),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n}))\n\nfunction SetFeatureHeightDlg(props: {\n model: {\n minScore: number\n maxScore: number\n setMinScore: Function\n setMaxScore: Function\n setFeatureHeight: Function\n setNoSpacing: Function\n featureHeightSetting: number\n noSpacing: boolean\n }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const { featureHeightSetting, noSpacing: noSpacingSetting } = model\n\n const [height, setHeight] = useState(`${featureHeightSetting}`)\n const [noSpacing, setNoSpacing] = useState(noSpacingSetting)\n\n const ok = height !== '' && !Number.isNaN(+height)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Set feature height\n <IconButton className={classes.closeButton} onClick={handleClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Typography>\n Adjust the feature height and whether there is any spacing between\n features. Setting feature height to 1 and removing spacing makes the\n display very compact\n </Typography>\n <div className={classes.root}>\n <Typography>Enter feature height: </Typography>\n <TextField\n value={height}\n onChange={event => {\n setHeight(event.target.value)\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={!!noSpacing}\n onChange={() => setNoSpacing(val => !val)}\n />\n }\n label=\"Remove spacing between features in y-direction?\"\n />\n\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n style={{ marginLeft: 20 }}\n disabled={!ok}\n onClick={() => {\n model.setFeatureHeight(\n height !== '' && !Number.isNaN(+height) ? +height : undefined,\n )\n model.setNoSpacing(noSpacing)\n\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetFeatureHeightDlg)\n","import React, { useState } from 'react'\nimport { observer } from 'mobx-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Typography,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 500,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n field: {\n margin: theme.spacing(2),\n },\n}))\n\nfunction SetMaxHeightDlg(props: {\n model: {\n maxHeight?: number\n setMaxHeight: Function\n }\n handleClose: () => void\n}) {\n const { model, handleClose } = props\n const classes = useStyles()\n const { maxHeight = '' } = model\n const [max, setMax] = useState(`${maxHeight}`)\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle id=\"alert-dialog-title\">\n Filter options\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div className={classes.root}>\n <Typography>Set max height for the track</Typography>\n <TextField\n value={max}\n onChange={event => {\n setMax(event.target.value)\n }}\n placeholder=\"Enter max height for layout\"\n />\n <Button\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n style={{ marginLeft: 20 }}\n onClick={() => {\n model.setMaxHeight(\n max !== '' && !Number.isNaN(+max) ? +max : undefined,\n )\n handleClose()\n }}\n >\n Submit\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(SetMaxHeightDlg)\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ObservableMap } from 'mobx'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n CircularProgress,\n makeStyles,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n\n table: {\n border: '1px solid #888',\n margin: theme.spacing(4),\n '& td': {\n padding: theme.spacing(1),\n },\n },\n}))\n\nfunction ModificationTable({\n modifications,\n}: {\n modifications: [string, string][]\n}) {\n const classes = useStyles()\n return (\n <table className={classes.table}>\n <tbody>\n {modifications.map(([key, value]) => (\n <tr key={key}>\n <td>{key}</td>\n <td>{value}</td>\n <td\n style={{\n width: '1em',\n background: value,\n }}\n />\n </tr>\n ))}\n </tbody>\n </table>\n )\n}\n\nfunction ColorByTagDlg(props: {\n model: {\n setColorScheme: Function\n modificationTagMap: ObservableMap<string, string>\n colorBy?: { type: string }\n }\n handleClose: () => void\n}) {\n const classes = useStyles()\n const { model, handleClose } = props\n const { colorBy, modificationTagMap } = model\n\n const modifications = [...modificationTagMap.entries()]\n\n return (\n <Dialog open onClose={handleClose}>\n <DialogTitle>\n Color by modifications\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={handleClose}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <div className={classes.root}>\n <Typography>\n You can choose to color the modifications in the BAM/CRAM MM/ML\n specification using this dialog. Choosing modifications colors the\n modified positions and can color multiple modification types.\n Choosing the methylation setting colors methylated and unmethylated\n CpG.\n </Typography>\n <Typography>\n Note: you can revisit this dialog to see the current mapping of\n colors to modification type for the modification coloring mode\n </Typography>\n <div style={{ margin: 20 }}>\n {colorBy?.type === 'modifications' ? (\n <div>\n {modifications.length ? (\n <>\n Current modification-type-to-color mapping\n <ModificationTable\n modifications={[...modificationTagMap.entries()]}\n />\n </>\n ) : (\n <div>\n <Typography>\n Note: color by modifications is already enabled. Loading\n current modifications...\n </Typography>\n <CircularProgress size={15} />\n </div>\n )}\n </div>\n ) : null}\n {colorBy?.type === 'methylation' ? (\n <ModificationTable\n modifications={[\n ['methylated', 'red'],\n ['unmethylated', 'blue'],\n ]}\n />\n ) : null}\n </div>\n <div style={{ display: 'flex' }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ margin: 5 }}\n onClick={() => {\n model.setColorScheme({\n type: 'modifications',\n })\n handleClose()\n }}\n >\n Modifications\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n style={{ margin: 5 }}\n onClick={() => {\n model.setColorScheme({\n type: 'methylation',\n })\n handleClose()\n }}\n >\n Methylation\n </Button>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n style={{ margin: 5 }}\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default observer(ColorByTagDlg)\n","import React, { useState } from 'react'\nimport {\n Typography,\n Link,\n Paper,\n Checkbox,\n FormControlLabel,\n FormGroup,\n makeStyles,\n} from '@material-ui/core'\nimport { observer } from 'mobx-react'\nimport { getSession } from '@jbrowse/core/util'\nimport copy from 'copy-to-clipboard'\nimport {\n FeatureDetails,\n BaseCard,\n SimpleValue,\n} from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'\nimport { parseCigar } from '../BamAdapter/MismatchParser'\n\nconst useStyles = makeStyles(() => ({\n compact: {\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 0,\n },\n}))\n\nconst omit = ['clipPos', 'flags']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction AlignmentFlags(props: { feature: any }) {\n const classes = useStyles()\n const { feature } = props\n const { flags } = feature\n const flagNames = [\n 'read paired',\n 'read mapped in proper pair',\n 'read unmapped',\n 'mate unmapped',\n 'read reverse strand',\n 'mate reverse strand',\n 'first in pair',\n 'second in pair',\n 'not primary alignment',\n 'read fails platform/vendor quality checks',\n 'read is PCR or optical duplicate',\n 'supplementary alignment',\n ]\n return (\n <BaseCard {...props} title=\"Flags\">\n <SimpleValue name={'Flag'} value={flags} />\n\n <FormGroup>\n {flagNames.map((name, index) => {\n const val = flags & (1 << index)\n const key = `${name}_${val}`\n return (\n <FormControlLabel\n key={key}\n control={\n <Checkbox\n className={classes.compact}\n checked={Boolean(val)}\n name={name}\n readOnly\n />\n }\n label={name}\n />\n )\n })}\n </FormGroup>\n </BaseCard>\n )\n}\n\nfunction Formatter({ value }: { value: unknown }) {\n const [show, setShow] = useState(false)\n const display = String(value)\n if (display.length > 100) {\n return (\n <>\n <button type=\"button\" onClick={() => copy(display)}>\n Copy\n </button>\n <button type=\"button\" onClick={() => setShow(val => !val)}>\n {show ? 'Show less' : 'Show more'}\n </button>\n <div>{show ? display : `${display.slice(0, 100)}...`}</div>\n </>\n )\n }\n return <div>{display}</div>\n}\n\n// utility function to get length of alignment from cigar\nfunction getLengthOnRef(cigar: string) {\n const cigarOps = parseCigar(cigar)\n let lengthOnRef = 0\n for (let i = 0; i < cigarOps.length; i += 2) {\n const len = +cigarOps[i]\n const op = cigarOps[i + 1]\n if (op !== 'H' && op !== 'S' && op !== 'I') {\n lengthOnRef += len\n }\n }\n return lengthOnRef\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction SupplementaryAlignments(props: { tag: string; model: any }) {\n const { tag, model } = props\n const session = getSession(model)\n return (\n <BaseCard {...props} title=\"Supplementary alignments\">\n <Typography>List of supplementary alignment locations</Typography>\n <ul>\n {tag\n .split(';')\n .filter(SA => !!SA)\n .map((SA, index) => {\n const [saRef, saStart, saStrand, saCigar] = SA.split(',')\n const saLength = getLengthOnRef(saCigar)\n const extra = Math.floor(saLength / 5)\n const start = +saStart\n const end = +saStart + saLength\n const locString = `${saRef}:${Math.max(1, start - extra)}-${\n end + extra\n }`\n const displayStart = start.toLocaleString('en-US')\n const displayEnd = end.toLocaleString('en-US')\n const displayString = `${saRef}:${displayStart}-${displayEnd} (${saStrand})`\n return (\n <li key={`${locString}-${index}`}>\n <Link\n onClick={() => {\n const { view } = model\n try {\n if (view) {\n view.navToLocString(locString)\n } else {\n throw new Error(\n 'No view associated with this view anymore',\n )\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`)\n }\n }}\n href=\"#\"\n >\n {displayString}\n </Link>\n </li>\n )\n })}\n </ul>\n </BaseCard>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction PairLink({ locString, model }: { locString: string; model: any }) {\n const session = getSession(model)\n return (\n <Link\n onClick={() => {\n const { view } = model\n try {\n if (view) {\n view.navToLocString(locString)\n } else {\n session.notify(\n 'No view associated with this feature detail panel anymore',\n 'warning',\n )\n }\n } catch (e) {\n console.error(e)\n session.notify(`${e}`)\n }\n }}\n href=\"#\"\n >\n {locString}\n </Link>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction AlignmentFeatureDetails(props: { model: any }) {\n const { model } = props\n const feat = JSON.parse(JSON.stringify(model.featureData))\n const SA = (feat.tags && feat.tags.SA) || feat.SA\n return (\n <Paper data-testid=\"alignment-side-drawer\">\n <FeatureDetails\n {...props}\n omit={omit}\n feature={feat}\n formatter={(value: unknown, key: string) => {\n return key === 'next_segment_position' ? (\n <PairLink model={model} locString={value as string} />\n ) : (\n <Formatter value={value} />\n )\n }}\n />\n {SA ? <SupplementaryAlignments model={model} tag={SA} /> : null}\n <AlignmentFlags feature={feat} {...props} />\n </Paper>\n )\n}\n\nexport default observer(AlignmentFeatureDetails)\n"],"names":["runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","key","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","Promise","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","getNextRefPos","parseCigar","cigar","split","cigarToMismatches","ops","seq","qual","currOffset","seqOffset","mismatches","len","op","start","base","r","q","j","cliplen","mdToMismatches","mdstring","cigarOps","cigarMismatches","mismatchRecords","curr","skips","filter","lastCigar","lastTemplateOffset","lastRefOffset","lastSkipPos","nextRecord","getTemplateCoordLocal","refCoord","templateOffset","refOffset","md","match","token","num","Number","startsWith","substring","mismatch","s","substr","qualScore","altbase","getTemplateCoord","getMismatches","cigarString","mdString","concat","seen","m","generateMD","target","query","queryOffset","targetOffset","lengthMD","console","warn","str","toLowerCase","toUpperCase","tmp","positions","cigarIdx","readPos","refPos","pos","getModificationPositions","mm","fseq","fstrand","revcom","mod","map","basemod","matches","strand","typestr","types","f","score","delta","temp","sort","a","b","flat","getModificationTypes","mods","pluginManager","late","ConfigurationSchema","fetchSizeLimit","defaultValue","cramLocation","uri","locationType","craiLocation","sequenceAdapter","pluggableConfigSchemaType","explicitlyTyped","addAdapterType","AdapterType","configSchema","load","configSchemaF","getAdapterClass","bamLocation","index","indexType","model","enumeration","location","chunkSizeLimit","htsgetBase","htsgetTrackId","adapterMetadata","category","hiddenFromGUI","description","subadapter","getTag","feature","tag","tags","get","getTagAlt","alt","orientationTypes","fr","F1R2","F2R1","F1F2","F2F1","R1R2","R2R1","R1F2","R2F1","rf","ff","mismatchLen","isInterbase","inc","bin","field","total","strands","dec","SNPCoverageAdapter","subadapterConfig","readConfObject","config","sequenceConf","getSubAdapter","dataAdapter","region","opts","ObservableCreate","observer","configure","stream","getFeatures","filters","pipe","passes","generateCoverageBins","bins","skipmap","SimpleFeature","id","data","snpinfo","end","refName","entries","skip","xs","signal","regions","estimateRegionsStats","getRefNames","features","colorBy","originalRefName","binMax","Math","ceil","assemblyName","toArray","toPromise","feat","regionSeq","reduce","fstart","fend","lowqual","cov","delskips","noncov","ref","ml","probabilities","e","charCodeAt","elt","min","probIndex","epos","methBins","Array","fill","l1","l2","bin1","ms","interbase","mstart","hash","BaseFeatureDataAdapter","capabilities","configSchemaFactory","adapterCapabilities","clipColor","indicatorThreshold","drawArcs","drawInterbaseCounts","drawIndicators","SNPCoverageRenderer","ctx","props","bpPerPx","displayCrossHatches","modificationTagMap","scaleOpts","unadjustedHeight","height","configTheme","theme","cfg","ticks","createJBrowseTheme","width","offset","YSCALEBAR_LABEL_OFFSET","domain","range","viewScale","getScale","snpViewScale","scaleType","indicatorViewScale","originY","getOrigin","snpOriginY","toY","n","toHeight","snpToY","indicatorToY","snpToHeight","indicatorToHeight","colorForBase","A","palette","bases","main","C","G","T","insertion","softclip","hardclip","meth","unmeth","feats","coverage","fillStyle","featureSpanPx","leftPx","rightPx","w","fillRect","prevTotal","extraHorizontallyFlippedOffset","reversed","max","totalScore","replace","interbaseEvents","indicatorHeight","accum","maxBase","indicatorComparatorScore","beginPath","l","moveTo","lineTo","bpSpanPx","left","right","neg","neutral","strokeStyle","lineWidth","log","bezierCurveTo","stroke","tick","round","WiggleBaseRenderer","baseConfiguration","ConfigSchema","register","addRendererType","ReactComponent","WiggleRendering","sortFeature","sortedBy","featureArray","from","featuresInCenterLine","featuresOutsideCenter","innerArray","doesIntersect2","isCram","t","isString","localeCompare","baseSortArray","consuming","baseMap","Map","aMismatch","bMismatch","acode","bcode","sortedMap","PileupLayoutSession","args","cachedLayout","showSoftClip","deepEqual","cachedLayoutIsValid","layout","makeLayout","LayoutSession","getColorBaseMap","deletion","alignmentColoring","color_fwd_strand_not_proper","color_rev_strand_not_proper","color_fwd_strand","color_rev_strand","color_fwd_missing_mate","color_rev_missing_mate","color_fwd_diff_chr","color_rev_diff_chr","color_pair_lr","color_pair_rr","color_pair_rl","color_pair_ll","color_nostrand","color_interchrom","color_longinsert","color_shortinsert","shouldDrawMismatches","includes","PileupRenderer","charWidth","measureText","charHeight","heightPx","displayMode","expansionBefore","expansionAfter","topPx","addRect","renderArgs","maxClippingSize","bpExpansion","floor","getOrientation","orientationType","orientation","LR","RR","RL","LL","_config","abs","flags","revflag","flipper","scores","val","k","layoutFeature","modifications","col","Color","alpha","hsl","string","regionSequence","rstart","rend","leftPx2","rightPx2","flip","closePath","defaultColor","colorTagMap","colorType","colorByInsertSize","colorByOrientation","colorByStranded","foundValue","drawRect","colorByPerBaseQuality","colorByModifications","colorByMethylation","minWidth","minSubfeatureWidth","largeInsertionIndicatorScale","mismatchAlpha","drawSNPs","drawIndels","pxPerBp","heightLim","getAlphaColor","baseColor","color","mlen","mbase","widthPx","getContrastText","fillText","txt","rect","insW","adjustPx","clearRect","padding","minFeatWidth","getCharWidthHeight","softClipLength","softClipStart","softClipLeftPx","softClipRightPx","softClipWidthPx","layoutRecords","insertScale","font","drawAlignmentRect","drawMismatches","drawSoftClipping","featureMap","iterMap","size","renderProps","sessionId","adapterConfig","createLayoutInWorker","layoutFeats","getAdapter","getTotalHeight","renderToAbstractCanvas","makeImageData","res","results","maxHeightReached","BoxRendererType","canvasPadding","PileupRendering","onMouseMove","blockKey","displayModel","selectedFeatureId","featureIdUnderMouse","contextMenuFeature","highlightOverlayCanvas","useRef","useState","mouseIsDown","setMouseIsDown","movedDuringLastMouseDown","setMovedDuringLastMouseDown","useEffect","canvas","current","getContext","selectedRect","getFeatureByID","leftBp","rightBp","bottomPx","rectTop","rectHeight","shadowColor","shadowBlur","lineJoin","strokeRect","highlightedFeature","highlightedRect","onMouseDown","event","callMouseHandler","onMouseEnter","onMouseOut","onMouseOver","onMouseUp","onClick","onMouseLeave","onContextMenu","mouseMove","offsetX","offsetY","getBoundingClientRect","top","clientX","clientY","px","clientBp","featIdUnderMouse","getFeatureOverlapping","handlerName","featureHandler","canvasHandler","canvasWidth","React","className","style","position","PrerenderedCanvas","onFocus","onBlur","contextVariable","maxHeight","noSpacing","configModelFactory","PileupDisplayConfigSchema","getDisplayType","SNPCoverageDisplayConfigSchema","pileupDisplay","snpCoverageDisplay","baseLinearDisplayConfigSchema","minDisplayHeight","stateModelFactory","compose","BaseDisplay","PileupDisplay","maybe","stateModel","SNPCoverageDisplay","snpCovHeight","literal","configuration","ConfigurationReference","showCoverage","showPileup","userFeatureScreenDensity","number","scrollTop","actions","toggleCoverage","togglePileup","setScrollTop","setSNPCoverageHeight","views","superTrackMenuItems","trackMenuItems","pileupDisplayConfig","conf","getConf","track","getContainingTrack","displayId","searchFeatureByID","DisplayBlurb","sortedByPosition","sortedByRefName","snpCoverageDisplayConfig","label","subMenu","setSNPCoverageDisplay","displayConfig","setUserFeatureScreenDensity","limit","setPileupDisplay","setHeight","displayHeight","resizeHeight","distance","oldHeight","newHeight","afterAttach","addDisposer","autorun","getSnapshot","setConfig","filterBy","setFilterBy","setColorBy","renderSvg","pileupHeight","when","ready","transform","overrideHeight","useStyles","makeStyles","resizeHandle","zIndex","AlignmentsDisplay","classes","RenderingComponent","ResizeHandle","onDrag","addDisplayType","DisplayType","modelFactory","trackType","viewType","SNPCoverageConfigFactory","SNPCoverageRendererConfigSchema","getRendererType","autoscale","minScore","MIN_VALUE","maxScore","MAX_VALUE","inverted","multiTicks","renderers","en","toLocaleString","TooltipContents","forwardRef","join","SNPCoverageTooltip","featureUnderMouse","Tooltip","getUniqueTagValues","colorScheme","blocks","getSession","rpcManager","getRpcSessionId","contentBlocks","getUniqueModificationValues","rendererTypes","linearWiggleDisplayModelFactory","optional","flagInclude","flagExclude","readName","tagFilter","observable","cast","updateModificationColorMap","uniqueModifications","colorPalette","has","newColor","set","superRenderProps","rendererConfig","configBlob","rendererTypeName","rendererType","getEnv","drawArcsSetting","drawInterbaseCountsSetting","drawIndicatorsSetting","modificationsReady","JSON","parse","stringify","superProps","notReady","toggleDrawIndicators","toggleDrawInterbaseCounts","toggleDrawArcs","getContainingView","staticBlocks","parentTrack","vals","setError","delay","TooltipComponent","needsScalebar","contextMenuItems","checked","SerializableFilterChain","LinearWiggleDisplayReactComponent","PileupConfigFactory","PileupRendererConfigSchema","SvgFeatureRendererConfigSchema","defaultRendering","SvgFeatureRenderer","renderer","maxFeatureScreenDensity","linearBasicDisplayConfigSchemaFactory","LinearPileupDisplayBlurb","backgroundColor","Typography","variant","ColorByTagDlg","lazy","FilterByTagDlg","SortByTagDlg","SetFeatureHeightDlg","SetMaxHeightDlg","ModificationsDlg","BaseLinearDisplay","showSoftClipping","featureHeight","fadeLikelihood","trackMaxHeight","extra","frozen","setReady","flag","setMaxHeight","setFeatureHeight","setNoSpacing","setColorScheme","totalKeys","updateColorTagMap","uniqueTag","view","uniqueTagSet","uniqueModificationsSet","renderInClient","timeout","setCurrBpPerPx","selectFeature","session","isSessionModelWithWidgets","featureWidget","addWidget","featureData","toJSON","showWidget","setSelection","clearSelected","copyFeatureToClipboard","uniqueId","rest","copy","notify","toggleSoftClipping","toggleMismatchAlpha","setSortedBy","centerLineInfo","centerBp","centerRefName","superReload","reload","featureHeightSetting","mismatchAlphaSetting","viewName","icon","MenuOpenIcon","clearFeatureSelection","ContentCopyIcon","rpcDriverName","currBpPerPx","VisibilityIcon","SortIcon","disabled","option","queueDialog","doneCallback","handleClose","PaletteIcon","FilterListIcon","BaseLinearDisplayComponent","createBaseTrackConfig","addTrackType","TrackType","createBaseTrackModel","linearAlignmentsDisplay","ElementId","safeReference","pluggableMstType","setFeatureData","clearFeatureData","addWidgetType","WidgetType","heading","PileupGetGlobalValueForTag","rpcDriverClassName","rootModel","assemblyManager","renameRegionsIfNeeded","renamedArgs","deserializeArguments","deserializedArgs","getFeaturesInMultipleRegions","featuresArray","uniqueValues","Set","add","RpcMethodType","PileupGetVisibleModifications","AlignmentsPlugin","CramAdapterF","BamAdapterF","LinearPileupDisplayF","LinearSNPCoverageDisplayF","AlignmentsTrackF","SNPCoverageAdapterF","HtsgetBamAdapterF","PileupRendererF","SNPCoverageRendererF","LinearAlignmentsDisplayF","AlignmentsFeatureWidgetF","addToExtensionPoint","adapterGuesser","file","adapterHint","regexGuess","adapterName","fileName","getFileName","makeIndex","test","indexName","makeIndexType","trackTypeGuesser","addRpcMethod","Plugin","CramSlightlyLazyFeature","store","_store","alignmentStart","lengthOnRef","readFeatures","mappingQuality","isReverseComplemented","rg","samHeader","readGroups","readGroupId","qualityScores","refIdToName","sequenceId","_get_seq_id","mate","isPaired","getPairOrientation","templateLength","templateSize","RG","_read_group_id","getReadBases","oplen","_refRegion","refStart","last_pos","sublen","code","sub","ret","added","String","fromCharCode","readLength","properties","getOwnPropertyNames","prop","methodName","qualRaw","_get_mismatches","CramAdapter","cram","IndexedCramFile","cramFilehandle","openLocation","CraiIndex","filehandle","seqFetch","bind","checkSequenceMD5","sequenceAdapterType","seqConf","getHeaderText","seqId","refIdToOriginalName","seqChunks","sequence","chunk","chunkStart","chunkEnd","trimStart","trimEnd","trimLength","chunkSeq","statusCallback","configured","getSamHeader","idToName","nameToId","sqLine","refId","item","rgLine","find","setupP","setupPre","setup","seqIdToRefName","indexOf","seqIdToOriginalRefName","refNameToId","getRecordsForRange","records","checkAbortSignal","cramRecordToFeature","bytesForRegions","bytes","_opts","all","chrId","getEntriesForRange","blockResults","sliceBytes","BamSlightlyLazyFeature","adapter","_next_refid","_refID","_next_pos","cachedMD","_tags","seq_id","fromEntries","cigarAttributeName","mdAttributeName","BamAdapter","bam","BamFile","bamFilehandle","csiFilehandle","baiFilehandle","updateStatus","getHeader","refSeqStore","trimmed","HtsgetBamAdapter","HtsgetFile","baseUrl","trackId","root","closeButton","spacing","grey","setTag","validTag","Dialog","open","onClose","DialogTitle","IconButton","CloseIcon","DialogContent","overflowX","TextField","onChange","placeholder","inputProps","maxLength","helperText","autoComplete","Button","marginLeft","paper","margin","flagNames","Bitmask","setFlag","Boolean","htmlFor","setFlagInclude","setFlagExclude","tagValue","setTagValue","setReadName","site","Link","href","Paper","display","noSpacingSetting","ok","FormControlLabel","control","Checkbox","setMax","table","border","ModificationTable","background","CircularProgress","compact","paddingRight","paddingTop","paddingBottom","omit","AlignmentFlags","BaseCard","title","SimpleValue","FormGroup","readOnly","Formatter","show","setShow","getLengthOnRef","SupplementaryAlignments","SA","saRef","saStart","saStrand","saCigar","saLength","locString","displayStart","displayEnd","displayString","navToLocString","PairLink","AlignmentFeatureDetails","FeatureDetails","formatter"],"mappings":"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"}
|