molstar
Version:
A comprehensive macromolecular library.
132 lines (131 loc) • 5.85 kB
JavaScript
/**
* 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;
}
;