##############################################################################
#                                                                            #
#	                Open Babel file: atomtyp.txt                         #
#                                                                            #
#  Copyright (c) 1998-2001 by OpenEye Scientific Software, Inc.              #
#  Some portions Copyright (c) 2001-2003 Geoffrey R. Hutchison               #
#  Part of the Open Babel package, under the GNU General Public License (GPL)#
#                                                                            #
# SMARTS patterns for atom typing (used by typer.cpp:OBAtomTyper)            #
#                                                                            #
# INTHYB: used to assign the internal hybridization values for atoms         #
# IMPVAL: used to assign the implicit valence of an atom                     #
# EXTTYP: used to assign the external type of an atom for translation to     #
#         package specific types (i.e. Sybyl Mol2)                           #
#        (these should correspond to INT type names in types.txt too.)       #
#                                                                            #
# The LAST PATTERN MATCHED is used to assign values with the corresponding   #
# INTHYB, IMPVAL, and EXTTYP values. Additions to this file should be placed #
# in the EXTRA DEFINITIONS section (to separate from original patterns.)     #
#                                                                            #
##############################################################################

INTHYB  [D4]                            3       #any 4 valent atom
INTHYB	[C]				3	#sp3 carbon
INTHYB	[c,$(C=*)]			2	#sp2 carbon
INTHYB	[$([#6]([#8D1])[#8D1])]		2	#sp2 carbon
INTHYB	[$(C#*),$(C(=*)=*)]		1	#sp  carbon
INTHYB	[N]				3	#sp3 nitrogen
INTHYB	[n,$(N=*),$(N[#6,#7,#8]=,:,#*)]	2	#sp2 nitrogen
INTHYB  [ND1,ND2,ND3]a			2	#sp2 nitrogen
INTHYB	[$(N#*),$([ND2](=*)=*)]		1	#sp  nitrogen
INTHYB	[O]				3	#sp3 oxygen
INTHYB	[o,$(O=*),$(O[#6,#7,#8]=,:*)]	2	#sp2 oxygen
INTHYB	[$([#8D1][#6][#8D1])]		2	#sp2 oxygen
INTHYB	[$(O#*)]			1	#sp  oxygen

INTHYB	[P]				3	#sp3 phosphorus
INTHYB	[#15;$([PD1]=*)]		2	#sp2 phosphorus
INTHYB	[S]				3	#sp3 sulfur
INTHYB	[#16;s,$([SD1]=*)]		2	#sp2 sulfur
INTHYB	[B]				2	#sp2 boron
INTHYB	[BD4]				3	#sp3 boron
#
#IMPLICIT VALENCE RULES
#
IMPVAL	[#6^3]			4
IMPVAL	[#6^2]			3
IMPVAL	[#6^1]			2
IMPVAL  [#6^3-]			3
IMPVAL  [#6^2-]			2
IMPVAL  [#6^1-]			1 #CM for isocyanides
IMPVAL  [c+]                    2

IMPVAL	[#8^3]				2
IMPVAL	[#8^2]				2
IMPVAL	[$([#8]=*)]			1
IMPVAL	[#8-]				1
IMPVAL  [$([#8D1]~[#7D3]~[#8D1])]	1
IMPVAL	[$([#8D1]~[#6]~[#8D1])]		1
# This is from JOELib -- add H to acidic oxygens
IMPVAL	[$([#8D1]-[#6]=[#8D1])]		2
# But don't add an H for pH-corrected formal-charge = -1 oxygens
IMPVAL	[$([#8D1-]-[#6]=[#8D1])]	1

IMPVAL	[N^3]			3
IMPVAL	[N^3+]			4
IMPVAL	[N^2]			3
IMPVAL  [N^2-,N^3-]		2
IMPVAL	[ND1^1]			1
IMPVAL	[ND2^1]			2
IMPVAL	[$(N([OD1])*)]		3
IMPVAL	[$(NC=O)]		3
IMPVAL	[$(N(~[OD1])~[OD1])]	3
IMPVAL	[$([Nr0]C=[Nr0])]	3
IMPVAL	[$(N=*)]		2
#IMPVAL	[$([Nr0]=C[Nr0])]	3 
IMPVAL	[$([Nr0]=C[Nr0])]	2
IMPVAL  [$([#7D1-]=*)]          1
IMPVAL	[n]			2
IMPVAL	[n-]			2
IMPVAL  [n+]			3

IMPVAL  [#9D0]		  1
IMPVAL  [#9D0-]		  0 #[F-]

IMPVAL	[#15D4]			4
IMPVAL	[#15D3]			3
IMPVAL	[#15D2]			3
IMPVAL	[#15D1^3]		3
IMPVAL	[#15D1^2]		3
IMPVAL  [#15D0]     3
IMPVAL  [$([#15]=[#6])]         2
IMPVAL  [pD2]			2
IMPVAL  [$([#15]=[#8])]		4 # phosphinate (double bond = one valence)

IMPVAL	[#16D4]			4
IMPVAL	[#16D3]			3
IMPVAL	[#16D2]			2
IMPVAL	[$([#16D1]-*)]		2
IMPVAL	[#16D1^2]		1
IMPVAL  [s]                     2
IMPVAL  [#16D1-]		1

IMPVAL  [#16D0]		  2
IMPVAL  [#17D0]		  1
IMPVAL  [#17D0-]	  0 #[Cl-]
IMPVAL  [#35D0]		  1
IMPVAL  [#35D0-]	  0 #[Br-]
IMPVAL  [#53D0]		  1
IMPVAL  [#53D0-]	  0 #[I-]

IMPVAL  [#5]			3
IMPVAL  [as]			3
#
#EXTERNAL TYPE RULES
#
EXTTYP	[#7^3]					N3
EXTTYP	[#7X4+]					N3+
EXTTYP	[#7^2]					Npl
EXTTYP	[#7^1]					N1
EXTTYP	[$(N=*)]				N2
EXTTYP	[$([Nr0]C(=[Nr0])[Nr0])]		Ng+
EXTTYP	[$([Nr0]=C([Nr0])[Nr0])]		Ng+
EXTTYP	[$([ND1]=C[ND1])]			Ng+
EXTTYP	[$([ND1]C=[ND1])]			Ng+
EXTTYP	[$(N(O)*)]				Nox
EXTTYP	[$(NC=[O,S])]				Nam
EXTTYP	[$(N(~[OD1])~[OD1])]			Ntr
EXTTYP	[n]					Nar

EXTTYP	[#6^3]					C3
EXTTYP	[#6^2]					C2
EXTTYP	[$(C(=O)[OD1])]				Cac
EXTTYP	[c]					Car
EXTTYP	[#6^1]					C1
EXTTYP	[#6+]					C+
EXTTYP	[#6-]					C-

EXTTYP	[#8^3]					O3
EXTTYP	[#8^2]					O2
EXTTYP  [$(Oa)]					O2
#The following 2 lines used for correct Sybyl atom typing
EXTTYP	[$([OD2]C=[O,S])]			O3	#ester oxygen
EXTTYP  [$(Oa)]					O3      #aromatic ether
EXTTYP	[#8-]					O-
EXTTYP  [$([#8D1]~[#6]~[#8D1])]			O.co2  

EXTTYP	[#15]					P
EXTTYP	[#15X4+]				P3+
EXTTYP	[#15;$([#15D4](~[OD1])(~[OD1])~[OD1])]	Pac
EXTTYP  [#15;$([#15D3](~[OD1])~[OD1])]		Pac

EXTTYP	[#16]					S3
EXTTYP	[#16D3+,#16X3+]				S3+
EXTTYP	[#16;s,$([SD1]=*)]			S2
EXTTYP	[#16D4;$(S(=O)(=O))]			So2
EXTTYP	[#16D3;$(S(=O))]			Sox
EXTTYP	[#16;$([#16D4](~[OD1])(~[OD1])~[OD1])]	Sac
EXTTYP	[#16;$([#16D3](~[OD1])~[OD1])]		Sac

EXTTYP	[#5]					B2
EXTTYP	[#5D4]					B3

######################## Add Extra Definitions Here ##########################


############################# End Extra Definitions ##########################

