|
@@ -12,6 +12,9 @@ import { SaccharideComponentMap, SaccharideComponent, SaccharidesSnfgMap, Saccha
|
|
|
import { memoize1 } from '../../../mol-util/memoize';
|
|
|
import { BasicData } from './schema';
|
|
|
import { Table } from '../../../mol-data/db';
|
|
|
+import { ModelFormat } from '../../format';
|
|
|
+import { MmcifFormat } from '../mmcif';
|
|
|
+import { AtomSiteOperatorMappingCategoryName } from '../../../mol-model/structure/export/categories/atom_site_operator_mapping';
|
|
|
|
|
|
function getMissingResidues(data: BasicData): Model['properties']['missingResidues'] {
|
|
|
const map = new Map<string, MissingResidue>();
|
|
@@ -108,18 +111,25 @@ const getUniqueComponentNames = memoize1((data: BasicData) => {
|
|
|
});
|
|
|
|
|
|
|
|
|
-function getStructAsymMap(data: BasicData): Model['properties']['structAsymMap'] {
|
|
|
+function getStructAsymMap(data: BasicData, format: ModelFormat): Model['properties']['structAsymMap'] {
|
|
|
const map = new Map<string, StructAsym>();
|
|
|
|
|
|
- const { label_asym_id, auth_asym_id, label_entity_id } = data.atom_site;
|
|
|
- for (let i = 0, il = label_asym_id.rowCount; i < il; ++i) {
|
|
|
- const id = label_asym_id.value(i);
|
|
|
- if (!map.has(id)) {
|
|
|
- map.set(id, {
|
|
|
- id,
|
|
|
- auth_id: auth_asym_id.value(i),
|
|
|
- entity_id: label_entity_id.value(i)
|
|
|
- });
|
|
|
+ // do not determine values from atom sites if mol_star atom site operator mapping is preset
|
|
|
+ const skipAtomSite = MmcifFormat.is(format)
|
|
|
+ && format.data.frame.categoryNames.indexOf(AtomSiteOperatorMappingCategoryName) >= 0
|
|
|
+ && data.struct_asym._rowCount > 0;
|
|
|
+
|
|
|
+ if (!skipAtomSite) {
|
|
|
+ const { label_asym_id, auth_asym_id, label_entity_id } = data.atom_site;
|
|
|
+ for (let i = 0, il = label_asym_id.rowCount; i < il; ++i) {
|
|
|
+ const id = label_asym_id.value(i);
|
|
|
+ if (!map.has(id)) {
|
|
|
+ map.set(id, {
|
|
|
+ id,
|
|
|
+ auth_id: auth_asym_id.value(i),
|
|
|
+ entity_id: label_entity_id.value(i)
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -139,11 +149,11 @@ function getStructAsymMap(data: BasicData): Model['properties']['structAsymMap']
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
-export function getProperties(data: BasicData): Model['properties'] {
|
|
|
+export function getProperties(data: BasicData, format: ModelFormat): Model['properties'] {
|
|
|
return {
|
|
|
missingResidues: getMissingResidues(data),
|
|
|
chemicalComponentMap: getChemicalComponentMap(data),
|
|
|
saccharideComponentMap: getSaccharideComponentMap(data),
|
|
|
- structAsymMap: getStructAsymMap(data)
|
|
|
+ structAsymMap: getStructAsymMap(data, format)
|
|
|
};
|
|
|
}
|