molstar
Version:
A comprehensive macromolecular library.
61 lines • 2.19 kB
JavaScript
/**
* Copyright (c) 2021 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.parseXyz = void 0;
var tslib_1 = require("tslib");
var db_1 = require("../../../mol-data/db");
var mol_task_1 = require("../../../mol-task");
var tokenizer_1 = require("../common/text/tokenizer");
var result_1 = require("../result");
function handleMolecule(tokenizer) {
var count = tokenizer.position >= tokenizer.data.length - 1 ? 0 : +tokenizer_1.Tokenizer.readLine(tokenizer);
if (isNaN(count))
count = 0;
var comment = tokenizer_1.Tokenizer.readLine(tokenizer);
var x = new Float64Array(count);
var y = new Float64Array(count);
var z = new Float64Array(count);
var type_symbol = new Array(count);
for (var i = 0; i < count; ++i) {
var line = tokenizer_1.Tokenizer.readLineTrim(tokenizer);
var fields = line.split(/\s+/g);
type_symbol[i] = fields[0];
x[i] = +fields[1];
y[i] = +fields[2];
z[i] = +fields[3];
}
return {
count: count,
comment: comment,
x: db_1.Column.ofFloatArray(x),
y: db_1.Column.ofFloatArray(y),
z: db_1.Column.ofFloatArray(z),
type_symbol: db_1.Column.ofStringArray(type_symbol)
};
}
function parseInternal(data) {
var tokenizer = (0, tokenizer_1.Tokenizer)(data);
var molecules = [];
while (true) {
var mol = handleMolecule(tokenizer);
if (mol.count === 0)
break;
molecules.push(mol);
}
var result = { molecules: molecules };
return result_1.ReaderResult.success(result);
}
function parseXyz(data) {
var _this = this;
return mol_task_1.Task.create('Parse Mol', function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
return [2 /*return*/, parseInternal(data)];
});
}); });
}
exports.parseXyz = parseXyz;
//# sourceMappingURL=parser.js.map
;