molstar
Version:
A comprehensive macromolecular library.
57 lines • 1.96 kB
JavaScript
/**
* Copyright (c) 2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { __awaiter, __generator } from "tslib";
import { Column } from '../../../mol-data/db';
import { Task } from '../../../mol-task';
import { Tokenizer } from '../common/text/tokenizer';
import { ReaderResult as Result } from '../result';
function handleMolecule(tokenizer) {
var count = tokenizer.position >= tokenizer.data.length - 1 ? 0 : +Tokenizer.readLine(tokenizer);
if (isNaN(count))
count = 0;
var comment = 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.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: Column.ofFloatArray(x),
y: Column.ofFloatArray(y),
z: Column.ofFloatArray(z),
type_symbol: Column.ofStringArray(type_symbol)
};
}
function parseInternal(data) {
var tokenizer = Tokenizer(data);
var molecules = [];
while (true) {
var mol = handleMolecule(tokenizer);
if (mol.count === 0)
break;
molecules.push(mol);
}
var result = { molecules: molecules };
return Result.success(result);
}
export function parseXyz(data) {
var _this = this;
return Task.create('Parse Mol', function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, parseInternal(data)];
});
}); });
}
//# sourceMappingURL=parser.js.map