molstar
Version:
A comprehensive macromolecular library.
128 lines • 5.81 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.PDBeStructRefDomain = void 0;
var tslib_1 = require("tslib");
var db_1 = require("../../mol-data/db");
var schema_1 = require("../../mol-io/reader/cif/schema");
var cif_1 = require("../../mol-io/writer/cif");
var wrapper_1 = require("../../mol-model-props/common/wrapper");
var mmcif_1 = require("../../mol-model-formats/structure/mmcif");
var custom_property_1 = require("../../mol-model/custom-property");
var PDBeStructRefDomain;
(function (PDBeStructRefDomain) {
function get(model) {
return model._staticPropertyData.__PDBeStructRefSeq__;
}
PDBeStructRefDomain.get = get;
function set(model, prop) {
model._staticPropertyData.__PDBeStructRefSeq__ = prop;
}
PDBeStructRefDomain.Schema = {
pdbe_struct_ref_domain: {
id: db_1.Column.Schema.int,
db_name: db_1.Column.Schema.str,
db_code: db_1.Column.Schema.str,
identifier: db_1.Column.Schema.str,
name: db_1.Column.Schema.str,
label_entity_id: db_1.Column.Schema.str,
label_asym_id: db_1.Column.Schema.str,
beg_label_seq_id: db_1.Column.Schema.int,
beg_pdbx_PDB_ins_code: db_1.Column.Schema.str,
end_label_seq_id: db_1.Column.Schema.int,
end_pdbx_PDB_ins_code: db_1.Column.Schema.str
}
};
PDBeStructRefDomain.Descriptor = (0, custom_property_1.CustomPropertyDescriptor)({
name: 'pdbe_struct_ref_domain',
cifExport: {
prefix: 'pdbe',
context: function (ctx) { return get(ctx.firstModel); },
categories: [
wrapper_1.PropertyWrapper.defaultInfoCategory('pdbe_struct_ref_domain_info', function (ctx) { return ctx.info; }),
{
name: 'pdbe_struct_ref_domain',
instance: function (ctx) {
if (!ctx || !ctx.data)
return cif_1.CifWriter.Category.Empty;
return cif_1.CifWriter.Category.ofTable(ctx.data);
}
}
]
}
});
function fromCifData(model) {
if (!mmcif_1.MmcifFormat.is(model.sourceData))
return void 0;
var cat = model.sourceData.data.frame.categories.pdbe_struct_ref_domain;
if (!cat)
return void 0;
return (0, schema_1.toTable)(PDBeStructRefDomain.Schema.pdbe_struct_ref_domain, cat);
}
function attachFromCifOrApi(model, params) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
var table, info, data;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (model.customProperties.has(PDBeStructRefDomain.Descriptor))
return [2 /*return*/, true];
info = wrapper_1.PropertyWrapper.tryGetInfoFromCif('pdbe_struct_ref_domain_info', model);
if (!info) return [3 /*break*/, 1];
table = fromCifData(model);
return [3 /*break*/, 4];
case 1:
if (!params.PDBe_apiSourceJson) return [3 /*break*/, 3];
return [4 /*yield*/, params.PDBe_apiSourceJson(model)];
case 2:
data = _a.sent();
if (!data)
return [2 /*return*/, false];
info = wrapper_1.PropertyWrapper.createInfo();
table = fromPDBeJson(model, data);
return [3 /*break*/, 4];
case 3: return [2 /*return*/, false];
case 4:
model.customProperties.add(PDBeStructRefDomain.Descriptor);
set(model, { info: info, data: table });
return [2 /*return*/, true];
}
});
});
}
PDBeStructRefDomain.attachFromCifOrApi = attachFromCifOrApi;
})(PDBeStructRefDomain = exports.PDBeStructRefDomain || (exports.PDBeStructRefDomain = {}));
function fromPDBeJson(modelData, data) {
var rows = [];
var id = 1;
for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) {
var db_name = _a[_i];
var db = data[db_name];
for (var _b = 0, _c = Object.keys(db); _b < _c.length; _b++) {
var db_code = _c[_b];
var domain = db[db_code];
for (var _d = 0, _e = domain.mappings; _d < _e.length; _d++) {
var map = _e[_d];
rows.push({
id: id++,
db_name: db_name,
db_code: db_code,
identifier: domain.identifier,
name: domain.name,
label_entity_id: '' + map.entity_id,
label_asym_id: map.struct_asym_id,
beg_label_seq_id: map.start.residue_number,
beg_pdbx_PDB_ins_code: map.start.author_insertion_code,
end_label_seq_id: map.end.residue_number,
end_pdbx_PDB_ins_code: map.end.author_insertion_code,
});
}
}
}
return db_1.Table.ofRows(PDBeStructRefDomain.Schema.pdbe_struct_ref_domain, rows);
}
//# sourceMappingURL=struct-ref-domain.js.map
;