UNPKG

molstar

Version:

A comprehensive macromolecular library.

75 lines 3.32 kB
"use strict"; /** * Copyright (c) 2021 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.parseConect = void 0; var cif_1 = require("../../../mol-io/reader/cif"); function parseConect(lines, lineStart, lineEnd, sites) { var idMap = {}; for (var i = 0, il = sites.id.rowCount; i < il; ++i) { idMap[sites.id.str(i)] = i; } var getLine = function (n) { return lines.data.substring(lines.indices[2 * n], lines.indices[2 * n + 1]); }; var id = []; var conn_type_id = []; var ptnr1_label_asym_id = []; var ptnr1_label_seq_id = []; var ptnr1_auth_seq_id = []; var ptnr1_label_atom_id = []; var ptnr2_label_asym_id = []; var ptnr2_label_seq_id = []; var ptnr2_auth_seq_id = []; var ptnr2_label_atom_id = []; var pos = [11, 16, 21, 26]; var k = 1; for (var i = lineStart; i < lineEnd; i++) { var line = getLine(i); var idxA = idMap[parseInt(line.substr(6, 5))]; var bondIndex = {}; if (idxA === undefined) continue; for (var j = 0; j < 4; ++j) { var idB = parseInt(line.substr(pos[j], 5)); if (Number.isNaN(idB)) continue; var idxB = idMap[idB]; if (idxB === undefined) continue; if (idxA > idxB) continue; // TODO: interpret records where a 'idxB' atom is given multiple times // as double/triple bonds, e.g. CONECT 1529 1528 1528 is a double bond if (bondIndex[idxB] !== undefined) continue; id.push("covale" + k); conn_type_id.push('covale'); ptnr1_label_asym_id.push(sites.label_asym_id.str(idxA)); ptnr1_auth_seq_id.push(sites.auth_seq_id.int(idxA)); ptnr1_label_seq_id.push(sites.label_seq_id.int(idxA)); ptnr1_label_atom_id.push(sites.label_atom_id.str(idxA)); ptnr2_label_asym_id.push(sites.label_asym_id.str(idxB)); ptnr2_auth_seq_id.push(sites.auth_seq_id.int(idxB)); ptnr2_label_seq_id.push(sites.label_seq_id.int(idxB)); ptnr2_label_atom_id.push(sites.label_atom_id.str(idxB)); k += 1; } } var struct_conn = { id: cif_1.CifField.ofStrings(id), conn_type_id: cif_1.CifField.ofStrings(conn_type_id), ptnr1_label_asym_id: cif_1.CifField.ofStrings(ptnr1_label_asym_id), ptnr1_auth_seq_id: cif_1.CifField.ofNumbers(ptnr1_auth_seq_id), ptnr1_label_seq_id: cif_1.CifField.ofNumbers(ptnr1_label_seq_id), ptnr1_label_atom_id: cif_1.CifField.ofStrings(ptnr1_label_atom_id), ptnr2_label_asym_id: cif_1.CifField.ofStrings(ptnr2_label_asym_id), ptnr2_label_seq_id: cif_1.CifField.ofNumbers(ptnr2_label_seq_id), ptnr2_auth_seq_id: cif_1.CifField.ofNumbers(ptnr2_auth_seq_id), ptnr2_label_atom_id: cif_1.CifField.ofStrings(ptnr2_label_atom_id), }; return cif_1.CifCategory.ofFields('struct_conn', struct_conn); } exports.parseConect = parseConect; //# sourceMappingURL=conect.js.map