hierarchy.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /**
  2. * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. */
  6. import { Column, Table } from 'mol-data/db'
  7. import { Segmentation } from 'mol-data/int'
  8. import { mmCIF_Schema as mmCIF } from 'mol-io/reader/cif/schema/mmcif'
  9. import { ElementSymbol} from '../types'
  10. export const AtomsSchema = {
  11. type_symbol: Column.Schema.Aliased<ElementSymbol>(mmCIF.atom_site.type_symbol),
  12. label_atom_id: mmCIF.atom_site.label_atom_id,
  13. auth_atom_id: mmCIF.atom_site.auth_atom_id,
  14. label_alt_id: mmCIF.atom_site.label_alt_id,
  15. pdbx_formal_charge: mmCIF.atom_site.pdbx_formal_charge
  16. // id, occupancy and B_iso_or_equiv are part of conformation
  17. };
  18. export type AtomsSchema = typeof AtomsSchema
  19. export interface Atoms extends Table<AtomsSchema> { }
  20. export const ResiduesSchema = {
  21. group_PDB: mmCIF.atom_site.group_PDB,
  22. label_comp_id: mmCIF.atom_site.label_comp_id,
  23. auth_comp_id: mmCIF.atom_site.auth_comp_id,
  24. label_seq_id: mmCIF.atom_site.label_seq_id,
  25. auth_seq_id: mmCIF.atom_site.auth_seq_id,
  26. pdbx_PDB_ins_code: mmCIF.atom_site.pdbx_PDB_ins_code
  27. };
  28. export type ResiduesSchema = typeof ResiduesSchema
  29. export interface Residues extends Table<ResiduesSchema> { }
  30. export const ChainsSchema = {
  31. label_asym_id: mmCIF.atom_site.label_asym_id,
  32. auth_asym_id: mmCIF.atom_site.auth_asym_id,
  33. label_entity_id: mmCIF.atom_site.label_entity_id
  34. }
  35. export type ChainsSchema = typeof ChainsSchema
  36. export interface Chains extends Table<ChainsSchema> { }
  37. export interface Data {
  38. atoms: Atoms,
  39. residues: Residues,
  40. chains: Chains
  41. }
  42. export interface Segments {
  43. residueSegments: Segmentation,
  44. chainSegments: Segmentation
  45. }
  46. export interface Keys {
  47. // indicate whether the keys form an increasing sequence and within each chain, sequence numbers
  48. // are in increasing order.
  49. // monotonous sequences enable for example faster secondary structure assignment.
  50. isMonotonous: boolean,
  51. // assign a key to each residue index.
  52. residueKey: Column<number>,
  53. // assign a key to each chain index
  54. chainKey: Column<number>,
  55. // assigne a key to each chain index
  56. // also index to the Entities table.
  57. entityKey: Column<number>,
  58. findChainKey(entityId: string, label_asym_id: string): number,
  59. findResidueKey(entityId: string, label_asym_id: string, label_comp_id: string, auth_seq_id: number, pdbx_PDB_ins_code: string): number
  60. }
  61. type _Hierarchy = Data & Segments & Keys
  62. export interface Hierarchy extends _Hierarchy { }
  63. export default Hierarchy