molstar
Version:
A comprehensive macromolecular library.
75 lines • 3.32 kB
JavaScript
/**
* 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
;