Skip to content
Snippets Groups Projects
Commit 9de16699 authored by David Sehnal's avatar David Sehnal
Browse files

mol-model: mmCIF export omit symmetry/asm related categories for "generated" structures

parent c91b826f
No related branches found
No related tags found
No related merge requests found
......@@ -43,13 +43,14 @@ export function getUniqueEntityIndicesFromStructures(structures: Structure[]): R
return ret.array;
}
export function copy_mmCif_category(name: keyof mmCIF_Schema, condition?: (model: Model) => boolean): CifWriter.Category<CifExportContext> {
export function copy_mmCif_category(name: keyof mmCIF_Schema, condition?: (structure: Structure) => boolean): CifWriter.Category<CifExportContext> {
return {
name,
instance({ structures }) {
if (condition && !condition(structures[0])) return CifWriter.Category.Empty;
const model = structures[0].model;
if (model.sourceData.kind !== 'mmCIF') return CifWriter.Category.Empty;
if (condition && !condition(model)) return CifWriter.Category.Empty;
const table = model.sourceData.data[name];
if (!table || !table._rowCount) return CifWriter.Category.Empty;
......
......@@ -43,6 +43,10 @@ const _entity: CifCategory<CifExportContext> = {
}
}
function isWithoutSymmetry(structure: Structure) {
return structure.units.every(u => u.conformation.operator.isIdentity)
}
const Categories = [
// Basics
copy_mmCif_category('entry'),
......@@ -50,13 +54,13 @@ const Categories = [
_entity,
// Symmetry
copy_mmCif_category('cell'),
copy_mmCif_category('symmetry'),
copy_mmCif_category('cell', isWithoutSymmetry),
copy_mmCif_category('symmetry', isWithoutSymmetry),
// Assemblies
copy_mmCif_category('pdbx_struct_assembly'),
copy_mmCif_category('pdbx_struct_assembly_gen'),
copy_mmCif_category('pdbx_struct_oper_list'),
copy_mmCif_category('pdbx_struct_assembly', isWithoutSymmetry),
copy_mmCif_category('pdbx_struct_assembly_gen', isWithoutSymmetry),
copy_mmCif_category('pdbx_struct_oper_list', isWithoutSymmetry),
// Secondary structure
_struct_conf,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment