molstar
Version:
A comprehensive macromolecular library.
106 lines • 5.29 kB
JavaScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.runLocal = void 0;
var tslib_1 = require("tslib");
var linear_algebra_1 = require("../../../mol-math/linear-algebra");
var console_logger_1 = require("../../../mol-util/console-logger");
var now_1 = require("../../../mol-util/now");
var performance_monitor_1 = require("../../../mol-util/performance-monitor");
var writer_1 = require("../utils/writer");
var jobs_1 = require("./jobs");
var query_1 = require("./query");
var structure_wrapper_1 = require("./structure-wrapper");
function runLocal(input) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
var _i, input_1, job_1, binary, started, job, key, progress, e_1;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (!input.length) {
console_logger_1.ConsoleLogger.error('Local', 'No input');
return [2 /*return*/];
}
for (_i = 0, input_1 = input; _i < input_1.length; _i++) {
job_1 = input_1[_i];
binary = /\.bcif/.test(job_1.output);
jobs_1.JobManager.add({
entries: job_1.queries.map(function (q) {
var _a;
return (0, jobs_1.JobEntry)({
entryId: q.input,
queryName: q.query,
queryParams: q.params || {},
modelNums: q.modelNums,
transform: (_a = q.transform) !== null && _a !== void 0 ? _a : linear_algebra_1.Mat4.identity(),
copyAllCategories: !!q.copyAllCategories
});
}),
writer: job_1.asTarGz
? new writer_1.TarballFileResultWriter(job_1.output, job_1.gzipLevel)
: new writer_1.FileResultWriter(job_1.output),
options: {
outputFilename: job_1.output,
binary: binary,
tarball: job_1.asTarGz
}
});
}
jobs_1.JobManager.sort();
started = (0, now_1.now)();
job = jobs_1.JobManager.getNext();
key = job.entries[0].key;
progress = 0;
_a.label = 1;
case 1:
if (!job) return [3 /*break*/, 6];
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, (0, query_1.resolveJob)(job)];
case 3:
_a.sent();
job.writer.end();
console_logger_1.ConsoleLogger.logId(job.id, 'Query', 'Written.');
if (job.entries.length > 0)
structure_wrapper_1.StructureCache.expireAll();
if (jobs_1.JobManager.hasNext()) {
job = jobs_1.JobManager.getNext();
if (key !== job.entries[0].key)
structure_wrapper_1.StructureCache.expire(key);
key = job.entries[0].key;
}
else {
return [3 /*break*/, 6];
}
return [3 /*break*/, 5];
case 4:
e_1 = _a.sent();
console_logger_1.ConsoleLogger.errorId(job.id, e_1);
if (jobs_1.JobManager.hasNext()) {
job = jobs_1.JobManager.getNext();
if (key !== job.entries[0].key)
structure_wrapper_1.StructureCache.expire(key);
key = job.entries[0].key;
}
else {
return [3 /*break*/, 6];
}
return [3 /*break*/, 5];
case 5:
console_logger_1.ConsoleLogger.log('Progress', "[" + ++progress + "/" + input.length + "] after " + performance_monitor_1.PerformanceMonitor.format((0, now_1.now)() - started) + ".");
return [3 /*break*/, 1];
case 6:
console_logger_1.ConsoleLogger.log('Progress', "Done in " + performance_monitor_1.PerformanceMonitor.format((0, now_1.now)() - started) + ".");
structure_wrapper_1.StructureCache.expireAll();
return [2 /*return*/];
}
});
});
}
exports.runLocal = runLocal;
//# sourceMappingURL=api-local.js.map
;