Files
2026-08-03 18:42:47 +08:00

170 lines
4.1 KiB
Python

#A* -------------------------------------------------------------------
#B* This file contains source code for the PyMOL computer program
#C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific.
#D* -------------------------------------------------------------------
#E* It is unlawful to modify or remove this copyright notice.
#F* -------------------------------------------------------------------
#G* Please see the accompanying LICENSE file for further information.
#H* -------------------------------------------------------------------
#I* Additional authors of this source file include:
#-*
#-*
#-*
#Z* -------------------------------------------------------------------
# bond lengths and other information useful for simply building atoms
#
#
length = {
( 'C3', 'H1') : 1.0900,
( 'C2', 'H1') : 1.0800,
( 'C1', 'H1') : 1.0560,
( 'H1', 'S1') : 1.3360,
( 'H3', 'NA') : 1.5999,
( 'H2', 'O3') : 0.9600,
( 'H3', 'N2') : 1.0100,
( 'H3', 'N3') : 1.0100,
( 'H4', 'N4') : 1.0100,
( 'H4', 'N5') : 1.0100,
( 'CA', 'CD') : 1.6999,
( '00', 'Du') : 0.5000,
( '00', 'Du') : 3.0000,
( 'Br', 'C1') : 1.7900,
( 'Br', 'C2') : 1.8900,
( 'Br', 'C3') : 1.9490,
( 'Br', 'OM') : 1.5000,
( 'Br', 'O2') : 1.5000,
( 'C1', 'C1') : 1.2060,
( 'C1', 'N1') : 1.1640,
( 'C1', 'C2') : 1.4000,
( 'C1', 'C3') : 1.4450,
( 'C1', 'Cl') : 1.6400,
( 'C1', 'F0') : 1.2700,
( 'C1', 'I0') : 1.9900,
( 'C1', 'O3') : 1.3300,
( 'C1', 'OA') : 1.3300,
( 'C1', 'C1') : 1.3000,
( 'C1', 'C2') : 1.3130,
( 'C1', 'O2') : 1.1610,
( 'C1', 'S1') : 1.5600,
( 'C2', 'N2') : 1.3800,
( 'C2', 'N4') : 1.3500,
( 'C2', 'C2') : 1.4630,
( 'C2', 'C3') : 1.5220,
( 'C2', 'Cl') : 1.7300,
( 'C2', 'F0') : 1.3330,
( 'C2', 'I0') : 2.1000,
( 'C2', 'N2') : 1.4200,
( 'C2', 'O3') : 1.3640,
( 'C2', 'OA') : 1.3640,
( 'C2', 'OM') : 1.2200,
( 'C2', 'S1') : 1.7200,
( 'C2', 'SM') : 1.7500,
( 'C2', 'Si') : 1.8650,
( 'C2', 'C2') : 1.3370,
( 'C2', 'N2') : 1.2800,
( 'C2', 'O2') : 1.2200,
( 'C2', 'S1') : 1.6000,
( 'C3', 'C2') : 1.5220,
( 'C3', 'C3') : 1.5260,
( 'C3', 'Cl') : 1.7950,
( 'C3', 'F0') : 1.3800,
( 'C3', 'I0') : 2.1490,
( 'C3', 'N2') : 1.4490,
( 'C3', 'N3') : 1.4710,
( 'C3', 'NB') : 1.4710,
( 'C3', 'N4') : 1.4490,
( 'C3', 'N5') : 1.4710,
( 'C3', 'O3') : 1.4100,
( 'C3', 'OA') : 1.4100,
( 'C3', 'OM') : 1.4100,
( 'C3', 'SA') : 1.8100,
( 'C3', 'S1') : 1.8100,
( 'C3', 'SM') : 1.8340,
( 'C3', 'Si') : 1.8800,
( 'Cl', 'OM') : 1.4200,
( 'Cl', 'O2') : 1.4200,
( 'F0', 'N3') : 1.4200,
( 'F0', 'P0') : 1.5600,
( 'I0', 'OM') : 1.6500,
( 'I0', 'O2') : 1.6500,
( 'Lp', 'N3') : 0.8000,
( 'Lp', 'S1') : 0.6790,
( 'Lp', 'O3') : 0.6000,
( 'N2', 'N2') : 1.2700,
( 'N2', 'N3') : 1.3000,
( 'N2', 'O3') : 1.4000,
( 'N2', 'P0') : 1.7400,
( 'N2', 'Z0') : 2.0500,
( 'N3', 'N3') : 1.3810,
( 'N3', 'O3') : 1.4800,
( 'N4', 'OM') : 1.2000,
( 'N4', 'O2') : 1.2000,
( 'O2', 'O2') : 1.2070,
( 'O2', 'P0') : 1.4800,
( 'O2', 'S1') : 1.4800,
( 'O3', 'P0') : 1.6100,
( 'O3', 'S1') : 1.3460,
( 'O3', 'Si') : 1.6450,
( 'OM', 'P0') : 1.4800,
( 'OM', 'S1') : 1.4500,
( 'S1', 'S1') : 2.0380,
( '00', 'H0') : 1.1000,
( '00', 'OA') : 1.4100,
( '00', 'NB') : 1.4100,
( '00', 'SA') : 1.8100,
( 'Ge', '00') : 2.1000,
( '00', '00') : 1.5000,
}
for a in list(length.keys()):
length[(a[1],a[0])]=length[a]
# below are inmcomplete (as is the underlying implementation, hehe )
nonlinear = {
'O3' : 1,
'OH' : 1,
'OW' : 1,
'O0' : 1,
'S1' : 1,
'S0' : 1,
'' : 1,
'' : 1,
'' : 1,
'' : 1,
}
tetrahedral = {
'C3' : 1,
'C0' : 1,
'OQ' : 1,
'N3' : 1,
'N5' : 1,
'N0' : 1,
'P0' : 1,
'B3' : 1,
'Si' : 1,
}
planer = {
'C2' : 1,
'CP' : 1,
'CM' : 1, # ?
'CR' : 1, # ?
'O2' : 1,
'OM' : 1,
'OP' : 1,
'N2' : 1,
'N4' : 1,
'B2' : 1,
'' : 1,
'' : 1,
'' : 1,
'O2' : 1,
}