molstar
Version:
A comprehensive macromolecular library.
98 lines • 4.55 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.PDBePreferredAssembly = 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 symmetry_1 = require("../../mol-model-formats/structure/property/symmetry");
var mmcif_1 = require("../../mol-model-formats/structure/mmcif");
var custom_property_1 = require("../../mol-model/custom-property");
var PDBePreferredAssembly;
(function (PDBePreferredAssembly) {
function getFirstFromModel(model) {
var symmetry = symmetry_1.ModelSymmetry.Provider.get(model);
return (symmetry === null || symmetry === void 0 ? void 0 : symmetry.assemblies.length) ? symmetry.assemblies[0].id : '';
}
PDBePreferredAssembly.getFirstFromModel = getFirstFromModel;
function get(model) {
return model._staticPropertyData.__PDBePreferredAssebly__ || getFirstFromModel(model);
}
PDBePreferredAssembly.get = get;
function set(model, prop) {
model._staticPropertyData.__PDBePreferredAssebly__ = prop;
}
PDBePreferredAssembly.Schema = {
pdbe_preferred_assembly: {
assembly_id: db_1.Column.Schema.str
}
};
PDBePreferredAssembly.Descriptor = (0, custom_property_1.CustomPropertyDescriptor)({
name: 'pdbe_preferred_assembly',
cifExport: {
prefix: 'pdbe',
context: function (ctx) { return get(ctx.firstModel); },
categories: [{
name: 'pdbe_preferred_assembly',
instance: function (ctx) {
return cif_1.CifWriter.Category.ofTable(db_1.Table.ofArrays(PDBePreferredAssembly.Schema.pdbe_preferred_assembly, { assembly_id: [ctx] }));
}
}]
}
});
function fromCifData(model) {
if (!mmcif_1.MmcifFormat.is(model.sourceData))
return void 0;
var cat = model.sourceData.data.frame.categories.pdbe_preferred_assembly;
if (!cat)
return void 0;
return (0, schema_1.toTable)(PDBePreferredAssembly.Schema.pdbe_preferred_assembly, cat).assembly_id.value(0) || getFirstFromModel(model);
}
function attachFromCifOrApi(model, params) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
var asmName, data;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (model.customProperties.has(PDBePreferredAssembly.Descriptor))
return [2 /*return*/, true];
asmName = fromCifData(model);
if (!(asmName === void 0 && params.PDBe_apiSourceJson)) return [3 /*break*/, 2];
return [4 /*yield*/, params.PDBe_apiSourceJson(model)];
case 1:
data = _a.sent();
if (!data)
return [2 /*return*/, false];
asmName = asmNameFromJson(model, data);
return [3 /*break*/, 3];
case 2: return [2 /*return*/, false];
case 3:
if (!asmName)
return [2 /*return*/, false];
model.customProperties.add(PDBePreferredAssembly.Descriptor);
set(model, asmName);
return [2 /*return*/, true];
}
});
});
}
PDBePreferredAssembly.attachFromCifOrApi = attachFromCifOrApi;
})(PDBePreferredAssembly = exports.PDBePreferredAssembly || (exports.PDBePreferredAssembly = {}));
function asmNameFromJson(modelData, data) {
var assemblies = data[0] && data[0].assemblies;
if (!assemblies || !assemblies.length)
return PDBePreferredAssembly.getFirstFromModel(modelData);
for (var _i = 0, assemblies_1 = assemblies; _i < assemblies_1.length; _i++) {
var asm = assemblies_1[_i];
if (asm.preferred) {
return asm.assembly_id;
}
}
return assemblies[0].assembly_id;
}
//# sourceMappingURL=preferred-assembly.js.map
;