INNER CODE UNIT · JavaScript

f_for

lh3/pangene · pangene.js:258

		let f_for = f, f_rev = f + this.seg.length * 2;
		let list_for = this.#traverse_bubble(vs,   ve,   flag, f_for, max_n);
		let list_rev = this.#traverse_bubble(ve^1, vs^1, flag, f_rev, max_n);
		if (list_for.length != list_rev.length) return [];
		let n_in = 0;
		for (let i = 0; i < list_for.length; ++i)
			if (flag[list_for[i]<<1|0] == f_rev || flag[list_for[i]<<1|1] == f_rev)
				++n_in;
		if (n_in != list_for.length) return [];
		for (let i = 0; i < list_for.length; ++i) {
			for (let rev = 0; rev < 2; ++rev) {
				const v = list_for[i]<<1 | rev;
				const off = this.idx[v].o, n = this.idx[v].n;
				for (let j = 0; j < n; ++j) {
					const a = this.arc[off + j];
					if (flag[a.w] != f_for && flag[a.w] != f_rev) // if reaching other vertices not reachable from start or end, there is no bubble
						return [];
				}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…