Browse Source

CIF exporter valueKind for atom_site.label_seq_id

David Sehnal 6 years ago
parent
commit
329e73c35e

+ 9 - 3
src/mol-model/structure/export/categories/atom_site.ts

@@ -12,15 +12,21 @@ import CifField = CifWriter.Field
 import CifCategory = CifWriter.Category
 import E = CifWriter.Encodings
 
-const atom_site_fields: CifField<StructureElement>[] = [
+const atom_site_fields: CifField<StructureElement, Structure>[] = [
     CifField.str('group_PDB', P.residue.group_PDB),
     CifField.index('id'),
     CifField.str('type_symbol', P.atom.type_symbol as any),
     CifField.str('label_atom_id', P.atom.label_atom_id),
-    CifField.str('label_alt_id', P.atom.label_alt_id),
 
     CifField.str('label_comp_id', P.residue.label_comp_id),
-    CifField.int('label_seq_id', P.residue.label_seq_id, { encoder: E.deltaRLE }),
+    CifField.int('label_seq_id', P.residue.label_seq_id, {
+        encoder: E.deltaRLE,
+        valueKind: (k, d) => {
+            const m = k.unit.model;
+            return m.atomicHierarchy.residues.label_seq_id.valueKind(m.atomicHierarchy.residueAtomSegments.index[k.element]);
+        }
+    }),
+    CifField.str('label_alt_id', P.atom.label_alt_id),
     CifField.str('pdbx_PDB_ins_code', P.residue.pdbx_PDB_ins_code),
 
     CifField.str('label_asym_id', P.chain.label_asym_id),

+ 1 - 1
src/mol-model/structure/model/properties/atomic/hierarchy.ts

@@ -29,7 +29,7 @@ export const ResiduesSchema = {
     auth_comp_id: mmCIF.atom_site.auth_comp_id,
     label_seq_id: mmCIF.atom_site.label_seq_id,
     auth_seq_id: mmCIF.atom_site.auth_seq_id,
-    pdbx_PDB_ins_code: mmCIF.atom_site.pdbx_PDB_ins_code
+    pdbx_PDB_ins_code: mmCIF.atom_site.pdbx_PDB_ins_code,
 };
 export type ResiduesSchema = typeof ResiduesSchema
 export interface Residues extends Table<ResiduesSchema> { }