UNPKG

molstar

Version:

A comprehensive macromolecular library.

132 lines (131 loc) 5.85 kB
"use strict"; /** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.wwPDB_chemCompAtom = exports.wwPDB_chemCompBond = void 0; var tslib_1 = require("tslib"); var fs = tslib_1.__importStar(require("fs")); var util = tslib_1.__importStar(require("util")); var cif_1 = require("../../../../mol-io/reader/cif"); var util_1 = require("../../../common/util"); var mmcif_1 = require("../../../../mol-io/reader/cif/schema/mmcif"); var chem_comp_1 = require("../../../../mol-model-formats/structure/property/bonds/chem_comp"); var chem_comp_2 = require("../../../../mol-model-formats/structure/property/atoms/chem_comp"); var ccd_1 = require("../../../../mol-io/reader/cif/schema/ccd"); require('util.promisify').shim(); var readFile = util.promisify(fs.readFile); var wwPDB_chemCompBond = function (_a) { var model = _a.model, params = _a.params; return tslib_1.__awaiter(void 0, void 0, void 0, function () { var table, data, entries; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, getChemCompBondTable(getBondTablePath(params))]; case 1: table = _b.sent(); data = chem_comp_1.ComponentBond.chemCompBondFromTable(model, table); entries = chem_comp_1.ComponentBond.getEntriesFromChemCompBond(data); return [2 /*return*/, chem_comp_1.ComponentBond.Provider.set(model, { entries: entries, data: data })]; } }); }); }; exports.wwPDB_chemCompBond = wwPDB_chemCompBond; function read(path) { return tslib_1.__awaiter(this, void 0, void 0, function () { var _a, _b; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: if (!path.endsWith('.bcif')) return [3 /*break*/, 2]; _b = Uint8Array.bind; return [4 /*yield*/, readFile(path)]; case 1: _a = new (_b.apply(Uint8Array, [void 0, _c.sent()]))(); return [3 /*break*/, 3]; case 2: _a = readFile(path, 'utf8'); _c.label = 3; case 3: return [2 /*return*/, _a]; } }); }); } var chemCompBondTable; function getChemCompBondTable(path) { return tslib_1.__awaiter(this, void 0, void 0, function () { var parsed, _a, _b, table; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: if (!!chemCompBondTable) return [3 /*break*/, 3]; _b = (_a = cif_1.CIF).parse; return [4 /*yield*/, read(path)]; case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()]).run()]; case 2: parsed = _c.sent(); if (parsed.isError) throw new Error(parsed.toString()); table = cif_1.CIF.toDatabase(mmcif_1.mmCIF_Schema, parsed.result.blocks[0]); chemCompBondTable = table.chem_comp_bond; _c.label = 3; case 3: return [2 /*return*/, chemCompBondTable]; } }); }); } function getBondTablePath(params) { var path = (0, util_1.getParam)(params, 'wwPDB', 'chemCompBondTablePath'); if (!path) throw new Error("wwPDB 'chemCompBondTablePath' not set!"); return path; } var wwPDB_chemCompAtom = function (_a) { var model = _a.model, params = _a.params; return tslib_1.__awaiter(void 0, void 0, void 0, function () { var table, data, entries; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, getChemCompAtomTable(getAtomTablePath(params))]; case 1: table = _b.sent(); data = chem_comp_2.ComponentAtom.chemCompAtomFromTable(model, table); entries = chem_comp_2.ComponentAtom.getEntriesFromChemCompAtom(data); return [2 /*return*/, chem_comp_2.ComponentAtom.Provider.set(model, { entries: entries, data: data })]; } }); }); }; exports.wwPDB_chemCompAtom = wwPDB_chemCompAtom; var chemCompAtomTable; function getChemCompAtomTable(path) { return tslib_1.__awaiter(this, void 0, void 0, function () { var parsed, _a, _b, table; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: if (!!chemCompAtomTable) return [3 /*break*/, 3]; _b = (_a = cif_1.CIF).parse; return [4 /*yield*/, read(path)]; case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()]).run()]; case 2: parsed = _c.sent(); if (parsed.isError) throw new Error(parsed.toString()); table = cif_1.CIF.toDatabase(ccd_1.CCD_Schema, parsed.result.blocks[0]); chemCompAtomTable = table.chem_comp_atom; _c.label = 3; case 3: return [2 /*return*/, chemCompAtomTable]; } }); }); } function getAtomTablePath(params) { var path = (0, util_1.getParam)(params, 'wwPDB', 'chemCompAtomTablePath'); if (!path) throw new Error("wwPDB 'chemCompAtomTablePath' not set!"); return path; }