UNPKG

molstar

Version:

A comprehensive macromolecular library.

144 lines 6.37 kB
"use strict"; /** * Copyright (c) 2018-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.getEncodedCif = exports.readPVCD = exports.readCCD = exports.readFileAsCollection = exports.ensureDataAvailable = exports.ensureAvailable = void 0; var tslib_1 = require("tslib"); var util = (0, tslib_1.__importStar)(require("util")); var path = (0, tslib_1.__importStar)(require("path")); var fs = (0, tslib_1.__importStar)(require("fs")); var zlib = (0, tslib_1.__importStar)(require("zlib")); var node_fetch_1 = (0, tslib_1.__importDefault)(require("node-fetch")); require('util.promisify').shim(); var readFile = util.promisify(fs.readFile); var writeFile = util.promisify(fs.writeFile); var mol_task_1 = require("../../mol-task"); var cif_1 = require("../../mol-io/reader/cif"); var cif_2 = require("../../mol-io/writer/cif"); var ccd_1 = require("../../mol-io/reader/cif/schema/ccd"); function ensureAvailable(path, url, forceDownload) { if (forceDownload === void 0) { forceDownload = false; } return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var data, _a, _b, _c, _d, _e, _f; return (0, tslib_1.__generator)(this, function (_g) { switch (_g.label) { case 0: if (!(forceDownload || !fs.existsSync(path))) return [3 /*break*/, 8]; console.log("downloading " + url + "..."); return [4 /*yield*/, (0, node_fetch_1.default)(url)]; case 1: data = _g.sent(); if (!fs.existsSync(DATA_DIR)) { fs.mkdirSync(DATA_DIR); } if (!url.endsWith('.gz')) return [3 /*break*/, 4]; _a = writeFile; _b = [path]; _d = (_c = zlib).gunzipSync; return [4 /*yield*/, data.buffer()]; case 2: return [4 /*yield*/, _a.apply(void 0, _b.concat([_d.apply(_c, [_g.sent()])]))]; case 3: _g.sent(); return [3 /*break*/, 7]; case 4: _e = writeFile; _f = [path]; return [4 /*yield*/, data.text()]; case 5: return [4 /*yield*/, _e.apply(void 0, _f.concat([_g.sent()]))]; case 6: _g.sent(); _g.label = 7; case 7: console.log("done downloading " + url); _g.label = 8; case 8: return [2 /*return*/]; } }); }); } exports.ensureAvailable = ensureAvailable; function ensureDataAvailable(forceDownload) { if (forceDownload === void 0) { forceDownload = false; } return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, ensureAvailable(CCD_PATH, CCD_URL, forceDownload)]; case 1: _a.sent(); return [4 /*yield*/, ensureAvailable(PVCD_PATH, PVCD_URL, forceDownload)]; case 2: _a.sent(); return [2 /*return*/]; } }); }); } exports.ensureDataAvailable = ensureDataAvailable; function readFileAsCollection(path, schema) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var parsed, _a; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = parseCif; return [4 /*yield*/, readFile(path, 'utf8')]; case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent()])]; case 2: parsed = _b.sent(); return [2 /*return*/, cif_1.CIF.toDatabaseCollection(schema, parsed.result)]; } }); }); } exports.readFileAsCollection = readFileAsCollection; function readCCD() { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/, readFileAsCollection(CCD_PATH, ccd_1.CCD_Schema)]; }); }); } exports.readCCD = readCCD; function readPVCD() { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/, readFileAsCollection(PVCD_PATH, ccd_1.CCD_Schema)]; }); }); } exports.readPVCD = readPVCD; function parseCif(data) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var comp, parsed; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: comp = cif_1.CIF.parse(data); console.time('parse cif'); return [4 /*yield*/, comp.run(function (p) { return console.log(mol_task_1.Progress.format(p)); }, 250)]; case 1: parsed = _a.sent(); console.timeEnd('parse cif'); if (parsed.isError) throw parsed; return [2 /*return*/, parsed]; } }); }); } function getEncodedCif(name, database, binary) { if (binary === void 0) { binary = false; } var encoder = cif_2.CifWriter.createEncoder({ binary: binary, encoderName: 'mol*' }); cif_2.CifWriter.Encoder.writeDatabase(encoder, name, database); return encoder.getData(); } exports.getEncodedCif = getEncodedCif; var DATA_DIR = path.join(__dirname, '..', '..', '..', '..', 'build/data'); var CCD_PATH = path.join(DATA_DIR, 'components.cif'); var PVCD_PATH = path.join(DATA_DIR, 'aa-variants-v1.cif'); var CCD_URL = 'http://ftp.wwpdb.org/pub/pdb/data/monomers/components.cif'; var PVCD_URL = 'http://ftp.wwpdb.org/pub/pdb/data/monomers/aa-variants-v1.cif'; //# sourceMappingURL=util.js.map