diff --git a/data/mmcif-popular-field-names.csv b/data/mmcif-popular-field-names.csv new file mode 100644 index 0000000000000000000000000000000000000000..33dd64ddd21b9137eb9c982925e6c1e1e041a473 --- /dev/null +++ b/data/mmcif-popular-field-names.csv @@ -0,0 +1,163 @@ +entity.id +entity.type +entity.src_method +entity.pdbx_description +entity.formula_weight +entity.pdbx_number_of_molecules +entity.details +entity.pdbx_mutation +entity.pdbx_fragment +entity.pdbx_ec + +exptl.entry_id +exptl.method + +cell.entry_id +cell.length_a +cell.length_b +cell.length_c +cell.angle_alpha +cell.angle_beta +cell.angle_gamma +cell.Z_PDB +cell.pdbx_unique_axis + +symmetry.entry_id +symmetry.space_group_name_H-M +symmetry.pdbx_full_space_group_name_H +symmetry.cell_setting +symmetry.Int_Tables_number +symmetry.space_group_name_Hall + +struct_conf.conf_type_id +struct_conf.id +struct_conf.pdbx_PDB_helix_id +struct_conf.beg_label_comp_id +struct_conf.beg_label_asym_id +struct_conf.beg_label_seq_id +struct_conf.pdbx_beg_PDB_ins_code +struct_conf.end_label_comp_id +struct_conf.end_label_asym_id +struct_conf.end_label_seq_id +struct_conf.pdbx_end_PDB_ins_code +struct_conf.beg_auth_comp_id +struct_conf.beg_auth_asym_id +struct_conf.beg_auth_seq_id +struct_conf.end_auth_comp_id +struct_conf.end_auth_asym_id +struct_conf.end_auth_seq_id +struct_conf.pdbx_PDB_helix_class +struct_conf.details +struct_conf.pdbx_PDB_helix_length + +struct_sheet_range.sheet_id +struct_sheet_range.id +struct_sheet_range.beg_label_comp_id +struct_sheet_range.beg_label_asym_id +struct_sheet_range.beg_label_seq_id +struct_sheet_range.pdbx_beg_PDB_ins_code +struct_sheet_range.end_label_comp_id +struct_sheet_range.end_label_asym_id +struct_sheet_range.end_label_seq_id +struct_sheet_range.pdbx_end_PDB_ins_code +struct_sheet_range.beg_auth_comp_id +struct_sheet_range.beg_auth_asym_id +struct_sheet_range.beg_auth_seq_id +struct_sheet_range.end_auth_comp_id +struct_sheet_range.end_auth_asym_id +struct_sheet_range.end_auth_seq_id + +struct_conn.id +struct_conn.conn_type_id +struct_conn.pdbx_PDB_id +struct_conn.ptnr1_label_asym_id +struct_conn.ptnr1_label_comp_id +struct_conn.ptnr1_label_seq_id +struct_conn.ptnr1_label_atom_id +struct_conn.pdbx_ptnr1_label_alt_id +struct_conn.pdbx_ptnr1_PDB_ins_code +struct_conn.pdbx_ptnr1_standard_comp_id +struct_conn.ptnr1_symmetry +struct_conn.ptnr2_label_asym_id +struct_conn.ptnr2_label_seq_id +struct_conn.ptnr2_label_atom_id +struct_conn.pdbx_ptnr2_label_alt_id +struct_conn.pdbx_ptnr2_PDB_ins_code +struct_conn.ptnr1_auth_asym_id +struct_conn.ptnr1_auth_comp_id +struct_conn.ptnr1_auth_seq_id +struct_conn.ptnr2_auth_asym_id +struct_conn.ptnr2_auth_comp_id +struct_conn.ptnr2_auth_seq_id +struct_conn.ptnr2_symmetry +struct_conn.pdbx_ptnr3_label_atom_id +struct_conn.pdbx_ptnr3_label_seq_id +struct_conn.pdbx_ptnr3_label_comp_id +struct_conn.pdbx_ptnr3_label_asym_id +struct_conn.pdbx_ptnr3_label_alt_id +struct_conn.pdbx_ptnr3_PDB_ins_code +struct_conn.details +struct_conn.pdbx_dist_value +struct_conn.pdbx_value_order + +struct_conn_type.id +struct_conn_type.criteria +struct_conn_type.reference + +chem_comp_bond.comp_id +chem_comp_bond.pdbx_stereo_config +chem_comp_bond.pdbx_ordinal +chem_comp_bond.pdbx_aromatic_flag +chem_comp_bond.atom_id_1 +chem_comp_bond.atom_id_2 +chem_comp_bond.value_order + +pdbx_struct_assembly.id +pdbx_struct_assembly.details +pdbx_struct_assembly.method_details +pdbx_struct_assembly.oligomeric_details +pdbx_struct_assembly.oligomeric_count + +pdbx_struct_assembly_gen.assembly_id +pdbx_struct_assembly_gen.oper_expression +pdbx_struct_assembly_gen.asym_id_list + +pdbx_struct_oper_list.id +pdbx_struct_oper_list.type +pdbx_struct_oper_list.name +pdbx_struct_oper_list.symmetry_operation +pdbx_struct_oper_list.matrix +pdbx_struct_oper_list.vector + +pdbx_struct_mod_residue.id +pdbx_struct_mod_residue.label_asym_id +pdbx_struct_mod_residue.label_seq_id +pdbx_struct_mod_residue.label_comp_id +pdbx_struct_mod_residue.auth_asym_id +pdbx_struct_mod_residue.auth_seq_id +pdbx_struct_mod_residue.auth_comp_id +pdbx_struct_mod_residue.PDB_ins_code +pdbx_struct_mod_residue.parent_comp_id +pdbx_struct_mod_residue.details + +atom_site.group_PDB +atom_site.id +atom_site.type_symbol +atom_site.label_atom_id +atom_site.label_alt_id +atom_site.label_comp_id +atom_site.label_asym_id +atom_site.label_entity_id +atom_site.label_seq_id +atom_site.pdbx_PDB_ins_code +atom_site.pdbx_formal_charge +atom_site.Cartn_x +atom_site.Cartn_y +atom_site.Cartn_z +atom_site.occupancy +atom_site.B_iso_or_equiv +atom_site.auth_atom_id +atom_site.auth_comp_id +atom_site.auth_asym_id +atom_site.auth_seq_id +atom_site.pdbx_PDB_model_num \ No newline at end of file diff --git a/src/mol-io/reader/cif/schema/mmcif.ts b/src/mol-io/reader/cif/schema/mmcif.ts index 62f3a395ce2a22d971779dd3785b2aa15ba81727..fc886449e2585ae18c72f9bac9cb27a49175b863 100644 --- a/src/mol-io/reader/cif/schema/mmcif.ts +++ b/src/mol-io/reader/cif/schema/mmcif.ts @@ -1,7 +1,9 @@ /** - * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * - * @author David Sehnal <david.sehnal@gmail.com> + * Code-generated 'mmCIF' schema file + * + * @author mol-star package (src/apps/schema-generator/generate) */ import { Database, Column } from 'mol-data/db' @@ -11,241 +13,200 @@ import Schema = Column.Schema const str = Schema.str; const int = Schema.int; const float = Schema.float; +const coord = Schema.coord; -const entry = { - id: str -} - -type EntityType = 'polymer' | 'non-polymer' | 'water' | 'macrolide' - -const entity = { - id: str, - type: Schema.Aliased<EntityType>(str), - src_method: str, - pdbx_description: str, - formula_weight: float, - pdbx_number_of_molecules: int, - details: str, - pdbx_mutation: str, - pdbx_fragment: str, - pdbx_ec: str -} - -const exptl = { - entry_id: str, - method: str -} - -const cell = { - entry_id: str, - length_a: float, - length_b: float, - length_c: float, - angle_alpha: float, - angle_beta: float, - angle_gamma: float, - Z_PDB: int, - pdbx_unique_axis: str -} - -const symmetry = { - entry_id: str, - 'space_group_name_H-M': str, - 'pdbx_full_space_group_name_H': str, - cell_setting: str, - Int_Tables_number: int, - space_group_name_Hall: str -} - -const struct_conf = { - conf_type_id: str, - id: str, - pdbx_PDB_helix_id: int, - beg_label_comp_id: str, - beg_label_asym_id: str, - beg_label_seq_id: int, - pdbx_beg_PDB_ins_code: str, - end_label_comp_id: str, - end_label_asym_id: str, - end_label_seq_id: int, - pdbx_end_PDB_ins_code: str, - beg_auth_comp_id: str, - beg_auth_asym_id: str, - beg_auth_seq_id: int, - end_auth_comp_id: str, - end_auth_asym_id: str, - end_auth_seq_id: int, - pdbx_PDB_helix_class: int, - details: str, - pdbx_PDB_helix_length: int -} - -const struct_sheet_range = { - sheet_id: str, - id: int, - beg_label_comp_id: str, - beg_label_asym_id: str, - beg_label_seq_id: int, - pdbx_beg_PDB_ins_code: str, - end_label_comp_id: str, - end_label_asym_id: str, - end_label_seq_id: int, - pdbx_end_PDB_ins_code: str, - beg_auth_comp_id: str, - beg_auth_asym_id: str, - beg_auth_seq_id: int, - end_auth_comp_id: str, - end_auth_asym_id: str, - end_auth_seq_id: int -} - -type StructConnTypeId = - | 'covale' - | 'covale_base' - | 'covale_phosphate' - | 'covale_sugar' - | 'disulf' - | 'hydrog' - | 'metalc' - | 'mismat' - | 'modres' - | 'saltbr' - -type BondValueOrder = - | 'SING' - | 'DOUB' - | 'TRIP' - | 'QUAD' - -const struct_conn = { - id: str, - conn_type_id: Schema.Aliased<StructConnTypeId>(str), - pdbx_PDB_id: str, - ptnr1_label_asym_id: str, - ptnr1_label_comp_id: str, - ptnr1_label_seq_id: int, - ptnr1_label_atom_id: str, - pdbx_ptnr1_label_alt_id: str, - pdbx_ptnr1_PDB_ins_code: str, - pdbx_ptnr1_standard_comp_id: str, - ptnr1_symmetry: str, - ptnr2_label_asym_id: str, - ptnr2_label_comp_id: str, - ptnr2_label_seq_id: int, - ptnr2_label_atom_id: str, - pdbx_ptnr2_label_alt_id: str, - pdbx_ptnr2_PDB_ins_code: str, - ptnr1_auth_asym_id: str, - ptnr1_auth_comp_id: str, - ptnr1_auth_seq_id: int, - ptnr2_auth_asym_id: str, - ptnr2_auth_comp_id: str, - ptnr2_auth_seq_id: int, - ptnr2_symmetry: str, - pdbx_ptnr3_label_atom_id: str, - pdbx_ptnr3_label_seq_id: int, - pdbx_ptnr3_label_comp_id: str, - pdbx_ptnr3_label_asym_id: str, - pdbx_ptnr3_label_alt_id: str, - pdbx_ptnr3_PDB_ins_code: str, - details: str, - pdbx_dist_value: float, - pdbx_value_order: Schema.Aliased<BondValueOrder>(str) -} - -const struct_conn_type = { - id: Schema.Aliased<StructConnTypeId>(str), - criteria: str, - reference: str -} - -const chem_comp_bond = { - comp_id: str, - pdbx_stereo_config: str, - pdbx_ordinal: int, - pdbx_aromatic_flag: Schema.Aliased<'Y' | 'N'>(str), - atom_id_1: str, - atom_id_2: str, - value_order: Schema.Aliased<BondValueOrder>(str) -} - -const pdbx_struct_assembly = { - id: str, - details: str, - method_details: str, - oligomeric_details: str, - oligomeric_count: int -} - -const pdbx_struct_assembly_gen = { - assembly_id: str, - oper_expression: str, - asym_id_list: str -} - -const pdbx_struct_oper_list = { - id: str, - type: str, - name: str, - symmetry_operation: str, - matrix: Schema.Matrix(3, 3), - vector: Schema.Vector(3) -} - -const pdbx_struct_mod_residue = { - id: int, - label_asym_id: str, - label_seq_id: int, - label_comp_id: str, - auth_asym_id: str, - auth_seq_id: int, - auth_comp_id: str, - PDB_ins_code: str, - parent_comp_id: str, - details: str -} - -const atom_site = { - group_PDB: str, - id: int, - type_symbol: str, - label_atom_id: str, - label_alt_id: str, - label_comp_id: str, - label_asym_id: str, - label_entity_id: str, - label_seq_id: int, - pdbx_PDB_ins_code: str, - pdbx_formal_charge: str, - Cartn_x: Schema.coord, - Cartn_y: Schema.coord, - Cartn_z: Schema.coord, - occupancy: float, - B_iso_or_equiv: float, - auth_atom_id: str, - auth_comp_id: str, - auth_asym_id: str, - auth_seq_id: int, - pdbx_PDB_model_num: int -} +const Aliased = Schema.Aliased; +const Matrix = Schema.Matrix; +const Vector = Schema.Vector; export const mmCIF_Schema = { - entry, - entity, - exptl, - cell, - symmetry, - struct_conf, - struct_sheet_range, - struct_conn, - struct_conn_type, - chem_comp_bond, - pdbx_struct_assembly, - pdbx_struct_assembly_gen, - pdbx_struct_oper_list, - pdbx_struct_mod_residue, - atom_site -}; + atom_site: { + auth_asym_id: str, + auth_atom_id: str, + auth_comp_id: str, + // auth_seq_id: str, + auth_seq_id: int, + B_iso_or_equiv: float, + Cartn_x: coord, + Cartn_y: coord, + Cartn_z: coord, + group_PDB: str, + // id: str, + id: int, + label_alt_id: str, + label_asym_id: str, + label_atom_id: str, + label_comp_id: str, + label_entity_id: str, + label_seq_id: int, + occupancy: float, + type_symbol: str, + pdbx_PDB_ins_code: str, + pdbx_PDB_model_num: int, + pdbx_formal_charge: int, + }, + cell: { + angle_alpha: float, + angle_beta: float, + angle_gamma: float, + entry_id: str, + length_a: float, + length_b: float, + length_c: float, + Z_PDB: int, + pdbx_unique_axis: str, + }, + chem_comp_bond: { + atom_id_1: str, + atom_id_2: str, + comp_id: str, + value_order: Aliased<'sing' | 'doub' | 'trip' | 'quad' | 'arom' | 'poly' | 'delo' | 'pi'>(str), + pdbx_ordinal: int, + pdbx_stereo_config: Aliased<'E' | 'Z' | 'N'>(str), + pdbx_aromatic_flag: Aliased<'Y' | 'N'>(str), + }, + entity: { + details: str, + formula_weight: float, + id: str, + src_method: Aliased<'nat' | 'man' | 'syn'>(str), + type: Aliased<'polymer' | 'non-polymer' | 'macrolide' | 'water'>(str), + pdbx_description: str, + pdbx_number_of_molecules: float, + pdbx_mutation: str, + pdbx_fragment: str, + pdbx_ec: str, + }, + exptl: { + entry_id: str, + method: str, + }, + struct_conf: { + beg_label_asym_id: str, + beg_label_comp_id: str, + beg_label_seq_id: int, + beg_auth_asym_id: str, + beg_auth_comp_id: str, + // beg_auth_seq_id: str, + beg_auth_seq_id: int, + conf_type_id: Aliased<'HELX_P' | 'HELX_OT_P' | 'HELX_RH_P' | 'HELX_RH_OT_P' | 'HELX_RH_AL_P' | 'HELX_RH_GA_P' | 'HELX_RH_OM_P' | 'HELX_RH_PI_P' | 'HELX_RH_27_P' | 'HELX_RH_3T_P' | 'HELX_RH_PP_P' | 'HELX_LH_P' | 'HELX_LH_OT_P' | 'HELX_LH_AL_P' | 'HELX_LH_GA_P' | 'HELX_LH_OM_P' | 'HELX_LH_PI_P' | 'HELX_LH_27_P' | 'HELX_LH_3T_P' | 'HELX_LH_PP_P' | 'HELX_N' | 'HELX_OT_N' | 'HELX_RH_N' | 'HELX_RH_OT_N' | 'HELX_RH_A_N' | 'HELX_RH_B_N' | 'HELX_RH_Z_N' | 'HELX_LH_N' | 'HELX_LH_OT_N' | 'HELX_LH_A_N' | 'HELX_LH_B_N' | 'HELX_LH_Z_N' | 'TURN_P' | 'TURN_OT_P' | 'TURN_TY1_P' | 'TURN_TY1P_P' | 'TURN_TY2_P' | 'TURN_TY2P_P' | 'TURN_TY3_P' | 'TURN_TY3P_P' | 'STRN'>(str), + details: str, + end_label_asym_id: str, + end_label_comp_id: str, + end_label_seq_id: int, + end_auth_asym_id: str, + end_auth_comp_id: str, + // end_auth_seq_id: str, + end_auth_seq_id: int, + id: str, + pdbx_beg_PDB_ins_code: str, + pdbx_end_PDB_ins_code: str, + pdbx_PDB_helix_class: str, + pdbx_PDB_helix_length: int, + pdbx_PDB_helix_id: str, + }, + struct_conn: { + conn_type_id: Aliased<'covale' | 'disulf' | 'hydrog' | 'metalc' | 'mismat' | 'saltbr' | 'modres' | 'covale_base' | 'covale_sugar' | 'covale_phosphate'>(str), + details: str, + id: str, + ptnr1_label_asym_id: str, + ptnr1_label_atom_id: str, + ptnr1_label_comp_id: str, + ptnr1_label_seq_id: int, + ptnr1_auth_asym_id: str, + ptnr1_auth_comp_id: str, + // ptnr1_auth_seq_id: str, + ptnr1_auth_seq_id: int, + ptnr1_symmetry: str, + ptnr2_label_asym_id: str, + ptnr2_label_atom_id: str, + ptnr2_label_seq_id: int, + ptnr2_auth_asym_id: str, + ptnr2_auth_comp_id: str, + // ptnr2_auth_seq_id: str, + ptnr2_auth_seq_id: int, + ptnr2_symmetry: str, + pdbx_ptnr1_PDB_ins_code: str, + pdbx_ptnr1_label_alt_id: str, + pdbx_ptnr1_standard_comp_id: str, + pdbx_ptnr2_PDB_ins_code: str, + pdbx_ptnr2_label_alt_id: str, + pdbx_ptnr3_PDB_ins_code: str, + pdbx_ptnr3_label_alt_id: str, + pdbx_ptnr3_label_asym_id: str, + pdbx_ptnr3_label_atom_id: str, + pdbx_ptnr3_label_comp_id: str, + pdbx_ptnr3_label_seq_id: int, + pdbx_PDB_id: str, + pdbx_dist_value: float, + pdbx_value_order: Aliased<'sing' | 'doub' | 'trip' | 'quad'>(str), + }, + struct_conn_type: { + criteria: str, + id: Aliased<'covale' | 'disulf' | 'hydrog' | 'metalc' | 'mismat' | 'saltbr' | 'modres' | 'covale_base' | 'covale_sugar' | 'covale_phosphate'>(str), + reference: str, + }, + struct_sheet_range: { + beg_label_asym_id: str, + beg_label_comp_id: str, + beg_label_seq_id: int, + end_label_asym_id: str, + end_label_comp_id: str, + end_label_seq_id: int, + beg_auth_asym_id: str, + beg_auth_comp_id: str, + // beg_auth_seq_id: str, + beg_auth_seq_id: int, + end_auth_asym_id: str, + end_auth_comp_id: str, + // end_auth_seq_id: str, + end_auth_seq_id: int, + id: str, + sheet_id: str, + pdbx_beg_PDB_ins_code: str, + pdbx_end_PDB_ins_code: str, + }, + symmetry: { + entry_id: str, + cell_setting: Aliased<'triclinic' | 'monoclinic' | 'orthorhombic' | 'tetragonal' | 'rhombohedral' | 'trigonal' | 'hexagonal' | 'cubic'>(str), + Int_Tables_number: int, + space_group_name_Hall: str, + 'space_group_name_H-M': str, + }, + pdbx_struct_assembly: { + method_details: str, + oligomeric_details: str, + oligomeric_count: int, + details: str, + id: str, + }, + pdbx_struct_mod_residue: { + id: int, + auth_asym_id: str, + auth_comp_id: str, + // auth_seq_id: str, + auth_seq_id: int, + PDB_ins_code: str, + label_asym_id: str, + label_comp_id: str, + label_seq_id: int, + parent_comp_id: str, + details: str, + }, + pdbx_struct_oper_list: { + id: str, + type: str, + name: str, + symmetry_operation: str, + matrix: Matrix(3, 3), + vector: Vector(3), + }, + pdbx_struct_assembly_gen: { + asym_id_list: str, + assembly_id: str, + oper_expression: str, + }, +} export type mmCIF_Schema = typeof mmCIF_Schema; export interface mmCIF_Database extends Database<mmCIF_Schema> { } \ No newline at end of file diff --git a/src/mol-model/structure/export/mmcif.ts b/src/mol-model/structure/export/mmcif.ts index 09d54ab04d10396846bd09b69d6393aba03c30c5..6af666d843779c1b55ca99f83e903775e228a5a7 100644 --- a/src/mol-model/structure/export/mmcif.ts +++ b/src/mol-model/structure/export/mmcif.ts @@ -111,7 +111,7 @@ const atom_site: Encoder.CategoryDefinition<Atom.Location> = { float('Cartn_y', P.atom.y), float('Cartn_z', P.atom.z), float('occupancy', P.atom.occupancy), - str('pdbx_formal_charge', P.atom.pdbx_formal_charge), + int('pdbx_formal_charge', P.atom.pdbx_formal_charge), str('auth_atom_id', P.atom.auth_atom_id), str('auth_comp_id', P.residue.auth_comp_id),