@gmod/vcf
Version:
High performance streaming Variant Call Format (VCF) parser in pure JavaScript
83 lines • 2.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = void 0;
exports.parseBreakend = parseBreakend;
function parseBreakend(breakendString) {
const tokens = breakendString.split(/[[\]]/);
if (tokens.length > 1) {
const MateDirection = breakendString.includes('[') ? 'right' : 'left';
let Join;
let Replacement;
let MatePosition;
for (const tok of tokens) {
if (tok) {
if (tok.includes(':')) {
// this is the remote location
MatePosition = tok;
Join = Replacement ? 'right' : 'left';
}
else {
// this is the local alteration
Replacement = tok;
}
}
}
if (!(MatePosition && Join && Replacement)) {
throw new Error(`Invalid breakend: ${breakendString}`);
}
return { MatePosition, Join, Replacement, MateDirection };
}
else {
if (breakendString.startsWith('.')) {
return {
Join: 'left',
SingleBreakend: true,
Replacement: breakendString.slice(1),
};
}
else if (breakendString.endsWith('.')) {
return {
Join: 'right',
SingleBreakend: true,
Replacement: breakendString.slice(0, -1),
};
}
else if (breakendString.startsWith('<')) {
const res = /<(.*)>(.*)/.exec(breakendString);
if (!res) {
throw new Error(`failed to parse ${breakendString}`);
}
const Replacement = res[2];
return Replacement
? {
Join: 'left',
Replacement,
MateDirection: 'right',
MatePosition: `<${res[1]}>:1`,
}
: undefined;
}
else if (breakendString.includes('<')) {
const res = /(.*)<(.*)>/.exec(breakendString);
if (!res) {
throw new Error(`failed to parse ${breakendString}`);
}
const Replacement = res[1];
return Replacement
? {
Join: 'right',
Replacement,
MateDirection: 'right',
MatePosition: `<${res[2]}>:1`,
}
: undefined;
}
}
return undefined;
}
var parse_ts_1 = require("./parse.js");
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(parse_ts_1).default; } });
//# sourceMappingURL=index.js.map