-
David Sehnal authoredDavid Sehnal authored
constants.ts 11.45 KiB
/**
* 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