UNPKG

molstar

Version:

A comprehensive macromolecular library.

116 lines 4.81 kB
/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { __awaiter, __generator } from "tslib"; import fetch from 'node-fetch'; import * as fs from 'fs'; import * as path from 'path'; import * as argparse from 'argparse'; import { makeDir } from '../../../mol-util/make-dir'; import { now } from '../../../mol-util/now'; import { PerformanceMonitor } from '../../../mol-util/performance-monitor'; var cmdParser = new argparse.ArgumentParser({ add_help: true, description: 'Download JSON data from PDBe API' }); cmdParser.add_argument('--in', { help: 'Input folder', required: true }); cmdParser.add_argument('--out', { help: 'Output folder', required: true }); var cmdArgs = cmdParser.parse_args(); function getPDBid(name) { var idx = name.indexOf('_'); if (idx < 0) idx = name.indexOf('.'); return name.substr(0, idx).toLowerCase(); } function findEntries() { var files = fs.readdirSync(cmdArgs.in); var cifTest = /\.cif$/; var groups = new Map(); var keys = []; for (var _i = 0, files_1 = files; _i < files_1.length; _i++) { var f = files_1[_i]; if (!cifTest.test(f)) continue; var id = getPDBid(f); var groupId = "" + id[1] + id[2]; if (groups.has(groupId)) groups.get(groupId).push(id); else { keys.push(groupId); groups.set(groupId, [id]); } } var ret = []; for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) { var key = keys_1[_a]; ret.push({ key: key, entries: groups.get(key) }); } return ret; } function process() { return __awaiter(this, void 0, void 0, function () { var entries, started, prog, _i, entries_1, e, ts, data, _a, _b, ee, query, _c, _d, e_1, time; return __generator(this, function (_e) { switch (_e.label) { case 0: entries = findEntries(); makeDir(cmdArgs.out); started = now(); prog = 0; _i = 0, entries_1 = entries; _e.label = 1; case 1: if (!(_i < entries_1.length)) return [3 /*break*/, 12]; e = entries_1[_i]; ts = now(); console.log(prog + "/" + entries.length + " " + e.entries.length + " entries."); data = Object.create(null); _a = 0, _b = e.entries; _e.label = 2; case 2: if (!(_a < _b.length)) return [3 /*break*/, 10]; ee = _b[_a]; return [4 /*yield*/, fetch("https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/" + ee)]; case 3: query = _e.sent(); _e.label = 4; case 4: _e.trys.push([4, 8, , 9]); if (!(query.status === 200)) return [3 /*break*/, 6]; _c = data; _d = ee; return [4 /*yield*/, query.json()]; case 5: _c[_d] = (_e.sent())[ee] || {}; return [3 /*break*/, 7]; case 6: console.error(ee, query.status); _e.label = 7; case 7: return [3 /*break*/, 9]; case 8: e_1 = _e.sent(); console.error(ee, '' + e_1); return [3 /*break*/, 9]; case 9: _a++; return [3 /*break*/, 2]; case 10: // const query = await fetch(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry`, { method: 'POST', body }); // console.log(query.status); // const data = await query.text(); fs.writeFileSync(path.join(cmdArgs.out, e.key + '.json'), JSON.stringify(data)); time = now() - started; console.log(++prog + "/" + entries.length + " in " + PerformanceMonitor.format(time) + " (last " + PerformanceMonitor.format(now() - ts) + ", avg " + PerformanceMonitor.format(time / prog) + ")"); _e.label = 11; case 11: _i++; return [3 /*break*/, 1]; case 12: return [2 /*return*/]; } }); }); } process(); //# sourceMappingURL=fetch-props-pdbe.js.map