|
@@ -0,0 +1,317 @@
|
|
|
+/**
|
|
|
+ * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
|
|
|
+ *
|
|
|
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
|
+ * @author David Sehnal <david.sehnal@gmail.com>
|
|
|
+ */
|
|
|
+
|
|
|
+import BitFlags from '../../mol-base/utils/bit-flags'
|
|
|
+
|
|
|
+export const enum EntityType {
|
|
|
+ Unknown = 'unknown',
|
|
|
+ Polymer = 'polymer',
|
|
|
+ NonPolymer = 'non-polymer',
|
|
|
+ Macrolide = 'macrolide',
|
|
|
+ Water = 'water'
|
|
|
+}
|
|
|
+
|
|
|
+export const enum MoleculeType {
|
|
|
+ Unknown,
|
|
|
+ Water,
|
|
|
+ Ion,
|
|
|
+ Protein,
|
|
|
+ RNA,
|
|
|
+ DNA,
|
|
|
+ Saccharide
|
|
|
+}
|
|
|
+
|
|
|
+export const enum BackboneType {
|
|
|
+ Unknown,
|
|
|
+ Protein,
|
|
|
+ RNA,
|
|
|
+ DNA,
|
|
|
+ CgProtein,
|
|
|
+ CgRNA,
|
|
|
+ CgDNA
|
|
|
+}
|
|
|
+
|
|
|
+const _chemCompNonPolymer = ['NON-POLYMER'];
|
|
|
+const _chemCompOther = ['OTHER'];
|
|
|
+const _chemCompSaccharide = [
|
|
|
+ 'D-SACCHARIDE', 'D-SACCHARIDE 1,4 AND 1,4 LINKING', 'D-SACCHARIDE 1,4 AND 1,6 LINKING',
|
|
|
+ 'L-SACCHARIDE', 'L-SACCHARIDE 1,4 AND 1,4 LINKING', 'L-SACCHARIDE 1,4 AND 1,6 LINKING',
|
|
|
+ 'SACCHARIDE'
|
|
|
+];
|
|
|
+
|
|
|
+export const ChemComp = {
|
|
|
+ Protein: [
|
|
|
+ 'D-BETA-PEPTIDE, C-GAMMA LINKING', 'D-GAMMA-PEPTIDE, C-DELTA LINKING',
|
|
|
+ 'D-PEPTIDE COOH CARBOXY TERMINUS', 'D-PEPTIDE NH3 AMINO TERMINUS', 'D-PEPTIDE LINKING',
|
|
|
+ 'L-BETA-PEPTIDE, C-GAMMA LINKING', 'L-GAMMA-PEPTIDE, C-DELTA LINKING',
|
|
|
+ 'L-PEPTIDE COOH CARBOXY TERMINUS', 'L-PEPTIDE NH3 AMINO TERMINUS', 'L-PEPTIDE LINKING',
|
|
|
+ 'PEPTIDE LINKING', 'PEPTIDE-LIKE'
|
|
|
+ ],
|
|
|
+ RNA: [
|
|
|
+ 'RNA OH 3 PRIME TERMINUS', 'RNA OH 5 PRIME TERMINUS', 'RNA LINKING'
|
|
|
+ ],
|
|
|
+ DNA: [
|
|
|
+ 'DNA OH 3 PRIME TERMINUS', 'DNA OH 5 PRIME TERMINUS', 'DNA LINKING',
|
|
|
+ 'L-DNA LINKING', 'L-RNA LINKING'
|
|
|
+ ],
|
|
|
+ Saccharide: _chemCompSaccharide,
|
|
|
+ Other: _chemCompOther,
|
|
|
+ NonPolymer: _chemCompNonPolymer,
|
|
|
+ Hetero: _chemCompNonPolymer.concat(_chemCompOther, _chemCompSaccharide)
|
|
|
+}
|
|
|
+
|
|
|
+export interface SecondaryStructureType extends BitFlags<SecondaryStructureType.Flag> { }
|
|
|
+export namespace SecondaryStructureType {
|
|
|
+ export const Helix = ['h', 'g', 'i']
|
|
|
+ export const Sheet = ['e', 'b']
|
|
|
+ export const Turn = ['s', 't', 'l', '']
|
|
|
+
|
|
|
+ export const is: (ss: SecondaryStructureType, f: Flag) => boolean = BitFlags.has
|
|
|
+
|
|
|
+ export const enum Flag {
|
|
|
+ None = 0x0,
|
|
|
+
|
|
|
+ // category
|
|
|
+ DoubleHelix = 0x1,
|
|
|
+ Helix = 0x2,
|
|
|
+ Beta = 0x4,
|
|
|
+ Turn = 0x8,
|
|
|
+
|
|
|
+ // category variant
|
|
|
+ LeftHanded = 0x10, // helix
|
|
|
+ RightHanded = 0x20,
|
|
|
+
|
|
|
+ ClassicTurn = 0x40, // turn
|
|
|
+ InverseTurn = 0x80,
|
|
|
+
|
|
|
+ // sub-category
|
|
|
+ HelixOther = 0x100, // protein
|
|
|
+ Helix27 = 0x200,
|
|
|
+ Helix3Ten = 0x400,
|
|
|
+ HelixAlpha = 0x800,
|
|
|
+ HelixGamma = 0x1000,
|
|
|
+ HelixOmega = 0x2000,
|
|
|
+ HelixPi = 0x4000,
|
|
|
+ HelixPolyproline = 0x8000,
|
|
|
+
|
|
|
+ DoubleHelixOther = 0x10000, // nucleic
|
|
|
+ DoubleHelixZ = 0x20000,
|
|
|
+ DoubleHelixA = 0x40000,
|
|
|
+ DoubleHelixB = 0x80000,
|
|
|
+
|
|
|
+ BetaOther = 0x100000, // protein
|
|
|
+ BetaStrand = 0x200000, // single strand
|
|
|
+ BetaSheet = 0x400000, // multiple hydrogen bonded strands
|
|
|
+ BetaBarell = 0x800000, // closed series of sheets
|
|
|
+
|
|
|
+ TurnOther = 0x1000000, // protein
|
|
|
+ Turn1 = 0x2000000,
|
|
|
+ Turn2 = 0x4000000,
|
|
|
+ Turn3 = 0x8000000,
|
|
|
+
|
|
|
+ NA = 0x10000000, // not applicable/available
|
|
|
+ }
|
|
|
+
|
|
|
+ export const SecondaryStructureMmcif: { [value: string]: number } = {
|
|
|
+ HELX_LH_27_P: Flag.Helix | Flag.LeftHanded | Flag.Helix27, // left-handed 2-7 helix (protein)
|
|
|
+ HELX_LH_3T_P: Flag.Helix | Flag.LeftHanded | Flag.Helix3Ten, // left-handed 3-10 helix (protein)
|
|
|
+ HELX_LH_AL_P: Flag.Helix | Flag.LeftHanded | Flag.HelixAlpha, // left-handed alpha helix (protein)
|
|
|
+ HELX_LH_A_N: Flag.DoubleHelix | Flag.LeftHanded | Flag.DoubleHelixA, // left-handed A helix (nucleic acid)
|
|
|
+ HELX_LH_B_N: Flag.DoubleHelix | Flag.LeftHanded | Flag.DoubleHelixB, // left-handed B helix (nucleic acid)
|
|
|
+ HELX_LH_GA_P: Flag.Helix | Flag.LeftHanded | Flag.HelixGamma, // left-handed gamma helix (protein)
|
|
|
+ HELX_LH_N: Flag.DoubleHelix | Flag.LeftHanded, // left-handed helix with type not specified (nucleic acid)
|
|
|
+ HELX_LH_OM_P: Flag.Helix | Flag.LeftHanded | Flag.HelixOmega, // left-handed omega helix (protein)
|
|
|
+ HELX_LH_OT_N: Flag.DoubleHelix | Flag.LeftHanded | Flag.DoubleHelixOther, // left-handed helix with type that does not conform to an accepted category (nucleic acid)
|
|
|
+ HELX_LH_OT_P: Flag.Helix | Flag.LeftHanded | Flag.HelixOther, // left-handed helix with type that does not conform to an accepted category (protein)
|
|
|
+ HELX_LH_P: Flag.Helix | Flag.LeftHanded, // left-handed helix with type not specified (protein)
|
|
|
+ HELX_LH_PI_P: Flag.Helix | Flag.LeftHanded | Flag.HelixPi, // left-handed pi helix (protein)
|
|
|
+ HELX_LH_PP_P: Flag.Helix | Flag.LeftHanded | Flag.HelixPolyproline, // left-handed polyproline helix (protein)
|
|
|
+ HELX_LH_Z_N: Flag.DoubleHelix | Flag.LeftHanded | Flag.DoubleHelixZ, // left-handed Z helix (nucleic acid)
|
|
|
+ HELX_N: Flag.DoubleHelix, // helix with handedness and type not specified (nucleic acid)
|
|
|
+ HELX_OT_N: Flag.DoubleHelix, // helix with handedness and type that do not conform to an accepted category (nucleic acid)
|
|
|
+ HELX_OT_P: Flag.Helix, // helix with handedness and type that do not conform to an accepted category (protein)
|
|
|
+ HELX_P: Flag.Helix, // helix with handedness and type not specified (protein)
|
|
|
+ HELX_RH_27_P: Flag.Helix | Flag.RightHanded | Flag.Helix27, // right-handed 2-7 helix (protein)
|
|
|
+ HELX_RH_3T_P: Flag.Helix | Flag.RightHanded | Flag.Helix3Ten, // right-handed 3-10 helix (protein)
|
|
|
+ HELX_RH_AL_P: Flag.Helix | Flag.RightHanded | Flag.HelixAlpha, // right-handed alpha helix (protein)
|
|
|
+ HELX_RH_A_N: Flag.DoubleHelix | Flag.RightHanded | Flag.DoubleHelixA, // right-handed A helix (nucleic acid)
|
|
|
+ HELX_RH_B_N: Flag.DoubleHelix | Flag.RightHanded | Flag.DoubleHelixB, // right-handed B helix (nucleic acid)
|
|
|
+ HELX_RH_GA_P: Flag.Helix | Flag.RightHanded | Flag.HelixGamma, // right-handed gamma helix (protein)
|
|
|
+ HELX_RH_N: Flag.DoubleHelix | Flag.RightHanded, // right-handed helix with type not specified (nucleic acid)
|
|
|
+ HELX_RH_OM_P: Flag.Helix | Flag.RightHanded | Flag.HelixOmega, // right-handed omega helix (protein)
|
|
|
+ HELX_RH_OT_N: Flag.DoubleHelix | Flag.RightHanded | Flag.DoubleHelixOther, // right-handed helix with type that does not conform to an accepted category (nucleic acid)
|
|
|
+ HELX_RH_OT_P: Flag.Helix | Flag.RightHanded | Flag.HelixOther, // right-handed helix with type that does not conform to an accepted category (protein)
|
|
|
+ HELX_RH_P: Flag.Helix | Flag.RightHanded, // right-handed helix with type not specified (protein)
|
|
|
+ HELX_RH_PI_P: Flag.Helix | Flag.RightHanded | Flag.HelixPi, // right-handed pi helix (protein)
|
|
|
+ HELX_RH_PP_P: Flag.Helix | Flag.RightHanded | Flag.HelixPolyproline, // right-handed polyproline helix (protein)
|
|
|
+ HELX_RH_Z_N: Flag.DoubleHelix | Flag.RightHanded | Flag.DoubleHelixZ, // right-handed Z helix (nucleic acid)
|
|
|
+ STRN: Flag.Beta | Flag.BetaStrand, // beta strand (protein)
|
|
|
+ TURN_OT_P: Flag.Turn | Flag.TurnOther, // turn with type that does not conform to an accepted category (protein)
|
|
|
+ TURN_P: Flag.Turn, // turn with type not specified (protein)
|
|
|
+ TURN_TY1P_P: Flag.Turn | Flag.InverseTurn | Flag.Turn1, // type I prime turn (protein)
|
|
|
+ TURN_TY1_P: Flag.Turn | Flag.ClassicTurn | Flag.Turn1, // type I turn (protein)
|
|
|
+ TURN_TY2P_P: Flag.Turn | Flag.InverseTurn | Flag.Turn2, // type II prime turn (protein)
|
|
|
+ TURN_TY2_P: Flag.Turn | Flag.ClassicTurn | Flag.Turn2, // type II turn (protein)
|
|
|
+ TURN_TY3P_P: Flag.Turn | Flag.InverseTurn | Flag.Turn3, // type III prime turn (protein)
|
|
|
+ TURN_TY3_P: Flag.Turn | Flag.ClassicTurn | Flag.Turn3, // type III turn (protein)
|
|
|
+ }
|
|
|
+
|
|
|
+ export const SecondaryStructurePdb: { [value: string]: number } = {
|
|
|
+ 1: Flag.Helix | Flag.RightHanded | Flag.HelixAlpha, // Right-handed alpha (default)
|
|
|
+ 2: Flag.Helix | Flag.RightHanded | Flag.HelixOmega, // Right-handed omega
|
|
|
+ 3: Flag.Helix | Flag.RightHanded | Flag.HelixPi, // Right-handed pi
|
|
|
+ 4: Flag.Helix | Flag.RightHanded | Flag.HelixGamma, // Right-handed gamma
|
|
|
+ 5: Flag.Helix | Flag.RightHanded | Flag.Helix3Ten, // Right-handed 310
|
|
|
+ 6: Flag.Helix | Flag.LeftHanded | Flag.HelixAlpha, // Left-handed alpha
|
|
|
+ 7: Flag.Helix | Flag.LeftHanded | Flag.HelixOmega, // Left-handed omega
|
|
|
+ 8: Flag.Helix | Flag.LeftHanded | Flag.HelixGamma, // Left-handed gamma
|
|
|
+ 9: Flag.Helix | Flag.Helix27, // 27 ribbon/helix
|
|
|
+ 10: Flag.Helix | Flag.HelixPolyproline, // Polyproline
|
|
|
+ }
|
|
|
+
|
|
|
+ export const SecondaryStructureStride: { [value: string]: number } = {
|
|
|
+ H: Flag.Helix | Flag.HelixAlpha, // Alpha helix
|
|
|
+ G: Flag.Helix | Flag.Helix3Ten, // 3-10 helix
|
|
|
+ I: Flag.Helix | Flag.HelixPi, // PI-helix
|
|
|
+ E: Flag.Beta | Flag.BetaSheet, // Extended conformation
|
|
|
+ B: Flag.Beta | Flag.BetaStrand, // Isolated bridge
|
|
|
+ b: Flag.Beta | Flag.BetaStrand, // Isolated bridge
|
|
|
+ T: Flag.Turn, // Turn
|
|
|
+ C: Flag.NA, // Coil (none of the above)
|
|
|
+ }
|
|
|
+
|
|
|
+ export const SecondaryStructureDssp: { [value: string]: number } = {
|
|
|
+ H: Flag.Helix | Flag.HelixAlpha, // alpha-helix
|
|
|
+ B: Flag.Beta | Flag.BetaStrand, // residue in isolated beta-bridge
|
|
|
+ E: Flag.Beta | Flag.BetaSheet, // extended strand, participates in beta ladder
|
|
|
+ G: Flag.Helix | Flag.Helix3Ten, // 3-helix (310 helix)
|
|
|
+ I: Flag.Helix | Flag.HelixPi, // 5 helix (pi-helix)
|
|
|
+ T: Flag.Turn, // hydrogen bonded turn
|
|
|
+ S: Flag.Turn, // bend
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export const VdwRadii = {
|
|
|
+ 'H': 1.1,
|
|
|
+ 'HE': 1.4,
|
|
|
+ 'LI': 1.81,
|
|
|
+ 'BE': 1.53,
|
|
|
+ 'B': 1.92,
|
|
|
+ 'C': 1.7,
|
|
|
+ 'N': 1.55,
|
|
|
+ 'O': 1.52,
|
|
|
+ 'F': 1.47,
|
|
|
+ 'NE': 1.54,
|
|
|
+ 'NA': 2.27,
|
|
|
+ 'MG': 1.73,
|
|
|
+ 'AL': 1.84,
|
|
|
+ 'SI': 2.1,
|
|
|
+ 'P': 1.8,
|
|
|
+ 'S': 1.8,
|
|
|
+ 'CL': 1.75,
|
|
|
+ 'AR': 1.88,
|
|
|
+ 'K': 2.75,
|
|
|
+ 'CA': 2.31,
|
|
|
+ 'SC': 2.3,
|
|
|
+ 'TI': 2.15,
|
|
|
+ 'V': 2.05,
|
|
|
+ 'CR': 2.05,
|
|
|
+ 'MN': 2.05,
|
|
|
+ 'FE': 2.05,
|
|
|
+ 'CO': 2.0,
|
|
|
+ 'NI': 2.0,
|
|
|
+ 'CU': 2.0,
|
|
|
+ 'ZN': 2.1,
|
|
|
+ 'GA': 1.87,
|
|
|
+ 'GE': 2.11,
|
|
|
+ 'AS': 1.85,
|
|
|
+ 'SE': 1.9,
|
|
|
+ 'BR': 1.83,
|
|
|
+ 'KR': 2.02,
|
|
|
+ 'RB': 3.03,
|
|
|
+ 'SR': 2.49,
|
|
|
+ 'Y': 2.4,
|
|
|
+ 'ZR': 2.3,
|
|
|
+ 'NB': 2.15,
|
|
|
+ 'MO': 2.1,
|
|
|
+ 'TC': 2.05,
|
|
|
+ 'RU': 2.05,
|
|
|
+ 'RH': 2.0,
|
|
|
+ 'PD': 2.05,
|
|
|
+ 'AG': 2.1,
|
|
|
+ 'CD': 2.2,
|
|
|
+ 'IN': 2.2,
|
|
|
+ 'SN': 1.93,
|
|
|
+ 'SB': 2.17,
|
|
|
+ 'TE': 2.06,
|
|
|
+ 'I': 1.98,
|
|
|
+ 'XE': 2.16,
|
|
|
+ 'CS': 3.43,
|
|
|
+ 'BA': 2.68,
|
|
|
+ 'LA': 2.5,
|
|
|
+ 'CE': 2.48,
|
|
|
+ 'PR': 2.47,
|
|
|
+ 'ND': 2.45,
|
|
|
+ 'PM': 2.43,
|
|
|
+ 'SM': 2.42,
|
|
|
+ 'EU': 2.4,
|
|
|
+ 'GD': 2.38,
|
|
|
+ 'TB': 2.37,
|
|
|
+ 'DY': 2.35,
|
|
|
+ 'HO': 2.33,
|
|
|
+ 'ER': 2.32,
|
|
|
+ 'TM': 2.3,
|
|
|
+ 'YB': 2.28,
|
|
|
+ 'LU': 2.27,
|
|
|
+ 'HF': 2.25,
|
|
|
+ 'TA': 2.2,
|
|
|
+ 'W': 2.1,
|
|
|
+ 'RE': 2.05,
|
|
|
+ 'OS': 2.0,
|
|
|
+ 'IR': 2.0,
|
|
|
+ 'PT': 2.05,
|
|
|
+ 'AU': 2.1,
|
|
|
+ 'HG': 2.05,
|
|
|
+ 'TL': 1.96,
|
|
|
+ 'PB': 2.02,
|
|
|
+ 'BI': 2.07,
|
|
|
+ 'PO': 1.97,
|
|
|
+ 'AT': 2.02,
|
|
|
+ 'RN': 2.2,
|
|
|
+ 'FR': 3.48,
|
|
|
+ 'RA': 2.83,
|
|
|
+ 'AC': 2.0,
|
|
|
+ 'TH': 2.4,
|
|
|
+ 'PA': 2.0,
|
|
|
+ 'U': 2.3,
|
|
|
+ 'NP': 2.0,
|
|
|
+ 'PU': 2.0,
|
|
|
+ 'AM': 2.0,
|
|
|
+ 'CM': 2.0,
|
|
|
+ 'BK': 2.0,
|
|
|
+ 'CF': 2.0,
|
|
|
+ 'ES': 2.0,
|
|
|
+ 'FM': 2.0,
|
|
|
+ 'MD': 2.0,
|
|
|
+ 'NO': 2.0,
|
|
|
+ 'LR': 2.0,
|
|
|
+ 'RF': 2.0,
|
|
|
+ 'DB': 2.0,
|
|
|
+ 'SG': 2.0,
|
|
|
+ 'BH': 2.0,
|
|
|
+ 'HS': 2.0,
|
|
|
+ 'MT': 2.0,
|
|
|
+ 'DS': 2.0,
|
|
|
+ 'RG': 2.0,
|
|
|
+ 'CN': 2.0,
|
|
|
+ 'UUT': 2.0,
|
|
|
+ 'FL': 2.0,
|
|
|
+ 'UUP': 2.0,
|
|
|
+ 'LV': 2.0,
|
|
|
+ 'UUH': 2.0
|
|
|
+}
|
|
|
+export const DefaultVdwRadius = 2.0
|