|
|
@@ -20,10 +20,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
|
};
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
-exports.getEnrty = exports.readOffset = exports.makeIndex = void 0;
|
|
|
+exports.getInteractionsFromEntry = exports.getEntryFromGeneName = exports.getEnrty = exports.readOffset = exports.makeIndex = void 0;
|
|
|
const fs_1 = __importDefault(require("fs"));
|
|
|
const readline_1 = __importDefault(require("readline"));
|
|
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
|
+const jsonata_1 = __importDefault(require("jsonata"));
|
|
|
const line$ = (path) => readline_1.default.createInterface({
|
|
|
input: fs_1.default.createReadStream(path),
|
|
|
crlfDelay: Infinity
|
|
|
@@ -111,3 +112,34 @@ const getEnrty = (dbPath, accession) => __awaiter(void 0, void 0, void 0, functi
|
|
|
return parser.parse(yield readOffset(dbPath, offsets[0], offsets[1]));
|
|
|
});
|
|
|
exports.getEnrty = getEnrty;
|
|
|
+const getEntryFromGeneName = (idmappingPath, dbPath, geneName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
+ var e_3, _g;
|
|
|
+ const sel = new RegExp('Gene_Name\t' + geneName);
|
|
|
+ let accessions = [];
|
|
|
+ try {
|
|
|
+ for (var _h = __asyncValues(line$(idmappingPath)), _j; _j = yield _h.next(), !_j.done;) {
|
|
|
+ const line = _j.value;
|
|
|
+ if (sel.test(line))
|
|
|
+ accessions.push(line.split('\t')[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
|
+ finally {
|
|
|
+ try {
|
|
|
+ if (_j && !_j.done && (_g = _h.return)) yield _g.call(_h);
|
|
|
+ }
|
|
|
+ finally { if (e_3) throw e_3.error; }
|
|
|
+ }
|
|
|
+ return yield getEnrty(dbPath, accessions[0]);
|
|
|
+});
|
|
|
+exports.getEntryFromGeneName = getEntryFromGeneName;
|
|
|
+const getInteractionsFromEntry = (json) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
+ const uniprotIDs = json.entry.accession;
|
|
|
+ const genes_interactant = [...new Set((0, jsonata_1.default)(`entry.comment[type="interaction"].interactant`).evaluate(json)
|
|
|
+ .filter((e) => !uniprotIDs.includes(e.label))
|
|
|
+ .map((e) => e.label))];
|
|
|
+ const scope_inter = (0, jsonata_1.default)(`entry.reference[scope ~> /INTERACTION WITH/i ]`).evaluate(json).map((e) => (Object.assign({ txt: Array.isArray(e.scope) ? e.scope.filter((ee) => ee.match(/INTERACTION\ WITH/)).join() : e.scope }, e))).map((e) => (Object.assign({ interaction: e.txt.substring(e.txt.indexOf("INTERACTION WITH ") + "INTERACTION WITH ".length, e.txt.length) }, e)));
|
|
|
+ const genes_scope_inter = [...new Set(scope_inter.map((e) => e.interaction))];
|
|
|
+ return [...new Set([...genes_scope_inter, ...genes_interactant])].filter(e => e);
|
|
|
+});
|
|
|
+exports.getInteractionsFromEntry = getInteractionsFromEntry;
|