Logo Search packages:      
Sourcecode: cdk version File versions  Download package

MMFF94BasedAtomTypePattern.java

/*  $RCSfile$
 *  $Author$
 *  $Date$
 *  $Revision$
 *
 *  Copyright (C) 2005-2007  Christian Hoppe <chhoppe@users.sf.net>
 *
 *  Contact: cdk-devel@lists.sourceforge.net
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public License
 *  as published by the Free Software Foundation; either version 2.1
 *  of the License, or (at your option) any later version.
 *  All we ask is that proper credit is given for our work, which includes
 *  - but is not limited to - adding the above copyright notice to the beginning
 *  of your source code files, and to any copyright notice that you may distribute
 *  with programs based on this work.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 */
package org.openscience.cdk.modeling.builder3d;

import java.util.List;
import java.util.Vector;
import java.util.regex.Pattern;

/**
 *  Class stores hose code patterns to identify mm2 force field atom types
 *
 * @author     chhoppe
 * @cdk.created    2004-09-07
 * @cdk.module     forcefield
 * @cdk.githash
 */
00043 public class MMFF94BasedAtomTypePattern {

      private List<Pattern> atomTypePatterns = new Vector<Pattern>();

      /**
       *Constructor for the MM2BasedAtomTypePattern object
       */
00050       MMFF94BasedAtomTypePattern() {
            createPattern();

      }

      /**
       *  Gets the atomTypePatterns attribute of the MM2BasedAtomTypePattern object
       *
       * @return    The atomTypePatterns as a vector
       */
00060       public List<Pattern> getAtomTypePatterns() {
            return atomTypePatterns;
      }

      /**
       *  Creates the atom type pattern
       */
00067       private void createPattern() {
            
            atomTypePatterns.add(Pattern.compile("C-[0-4][+]?+;[A-Za-z+-]{0,6}[(].*+"));
            //Csp3
            atomTypePatterns.add(Pattern.compile("[C]-[1-3];[H]{0,2}+[A-Za-z]*+=[C]{1}+.*+"));
            //Csp2
            atomTypePatterns.add(Pattern.compile("[CS]-[0-3];[H]{0,2}+[A-Za-z]*+=[NOPS]{1}+.*+"));
            //Csp2 C=
            atomTypePatterns.add(Pattern.compile("C-[0-2];[H]{0,1}+%.*+"));
            //csp
            atomTypePatterns.add(Pattern.compile("[CS]-[3][-]?+;[A-Za-z]{0,2}+=O=O[A-Za-z]{0,2}+[(].*+"));
            //C(S)O2-M
            atomTypePatterns.add(Pattern.compile("C-[2-3];[H]{0,1}+=N[+]?+N[+]?+C[(].*+"));
            //CNN+ N+=C-N
            atomTypePatterns.add(Pattern.compile("C-1[-]?+;%N[+]?+[(].*+"));
            //c in isonitrile C%
            atomTypePatterns.add(Pattern.compile("C-2;=N[+]?+N[(].*+"));
            //imidazolium IM+ 
            atomTypePatterns.add(Pattern.compile("C-[0-4];[A-Za-z+-]{1,6}[(].*+"));
            //CR4R Csp3 in 4 member rings -> in configure atom type (20)
            atomTypePatterns.add(Pattern.compile("C-[0-4];[A-Za-z+-]{1,6}[(].*+"));
            //CR3R Csp3 in 3 member rings -> in configure atom type (10)
            atomTypePatterns.add(Pattern.compile("[C]-[0-3];[H]{0,2}+[A-Za-z]*+=[A-Z]{1,2}+.*+"));
            //CE4R Csp2 ->configure atom 4mRing
            atomTypePatterns.add(Pattern.compile("[C]-[0-3];[H]{0,2}+[A-Za-z]*+=[A-Z]{1,2}+.*+"));
            //Car Csp2 aromatic 
            atomTypePatterns.add(Pattern.compile("C-[2-3];[H]?+[C]{1}+[A-Z&&[^C]]{1}+[(].*+"));
            //C5A atom configure alpha carbon 5 mem. hetero ring
            atomTypePatterns.add(Pattern.compile("C-[2-3];[H]?+[C]{2,3}+[(][HC]{0,2}+[,]?+[A-Z&&[^C]]{1}+.*+"));
            //C5B atom configure beta carbon 5 mem. hetero ring
            atomTypePatterns.add(Pattern.compile("NO PATTERN"));
            // C5 c or n in heteroaromtaic ring, not alpha or beta C5/N5 (15)
            atomTypePatterns.add(Pattern.compile("H-[1];[C,Si][+]?+[(].*+"));
            //HC
            atomTypePatterns.add(Pattern.compile("H-[1];O[(].{2,}+.*+"));
            //HO
            atomTypePatterns.add(Pattern.compile("H-[0-1];[N][(].*+"));
            //HN
            atomTypePatterns.add(Pattern.compile("H-1;O[(]C/[H]{0,1}+=O.*+"));
            //HO COOH-> configure Atom
            atomTypePatterns.add(Pattern.compile("H-[0-1];N[(][H]{0,2}+=C.*+"));
            //HN=C -> configure atom (20)
            atomTypePatterns.add(Pattern.compile("H-[0-1];N[(][H]{0,2}+=[A-Z[^C]].*+"));
            //HN2 HN=X -> configure atom
            atomTypePatterns.add(Pattern.compile("H-[0-1];O[(]C/[H]?+=C.*+"));
            //HOCC enol phenol
            atomTypePatterns.add(Pattern.compile("H-[0-1];O[(]H[)]"));
            //HOH
            atomTypePatterns.add(Pattern.compile("H-[0-1];O[(][H]{0,2}+=?+S.*+"));
            //HOS
            atomTypePatterns.add(Pattern.compile("H-[0-1];[N][+][(].*+"));
            //HN+
            atomTypePatterns.add(Pattern.compile("H-[1];O[+][(][A-Za-z[^=]]{1,4}+.*+"));
            //HO+ 
            atomTypePatterns.add(Pattern.compile("H-[1];O[+][(].*+"));
            //HO=+
            atomTypePatterns.add(Pattern.compile("H-[1];[SP].*+"));
            //H on S or P (28)
            
            atomTypePatterns.add(Pattern.compile("O-[2];[HCSN]{1,2}+[+]?+[(].*+"));
            //O Ether,Alcohol
            atomTypePatterns.add(Pattern.compile("O-[1];=.*+"));
            //0= (30)
            atomTypePatterns.add(Pattern.compile("O-[1];=[A-Za-z[^C]]{1,2}+.*+"));
            //O=X
            atomTypePatterns.add(Pattern.compile("O-[1][-]?+;.*+"));
            //OM O-
            atomTypePatterns.add(Pattern.compile("O-[3][+];.*+"));
            //O+
            atomTypePatterns.add(Pattern.compile("O-[1-2][+];[A-Za-z]{0,2}+=.*+"));
            //O=+
            atomTypePatterns.add(Pattern.compile("O-[1-2];[H]{0,2}+.*"));
            //O in water 
            atomTypePatterns.add(Pattern.compile("O-2;CC.=C.*+&.*+&.*+"));
            //osp2furan (36)
            
            atomTypePatterns.add(Pattern.compile("N-[0-3];[A-Za-z &&[^=%]]{1,3}+.*+"));
            //N nsp3
            atomTypePatterns.add(Pattern.compile("N-[1-3];[H]{0,2}+[A-Za-z]*+=[CN].*+"));
            //N=C n imides
            atomTypePatterns.add(Pattern.compile("N-[1-3];[H]{0,3}+[C]*+[(].*+=C.*+"));
            //NC=C
            atomTypePatterns.add(Pattern.compile("N-[1-2][+]?+;%.*+"));
            //nsp (40)
            atomTypePatterns.add(Pattern.compile("N-[2][+]?+;=[NC]=[NC][-]?+[(].*+"));
            //n =N= C=N=N N=N=N)
            atomTypePatterns.add(Pattern.compile("N-1[+-]?+;%?+=?+N[+]?+[(]=?+N[-]?+.*+"));
            //NAZT terminal n in azido);
            atomTypePatterns.add(Pattern.compile("N-4[+];.*+"));
            //N+ nsp3 ammonium
            atomTypePatterns.add(Pattern.compile("N-[2-3][+]?+;=[A-Z[^O]]{1,2}+O[-]?+[(].*+"));
            //N2OX n aromatic n oxide sp2
            atomTypePatterns.add(Pattern.compile("N-[1-3];[H]{0,2}+[O]{0,1}+[-]?+[A-Za-z[^O]]{0,2}+[O]{0,1}+[-]?+[(].*+"));
            //N3OX aromatic n oxide sp3
            atomTypePatterns.add(Pattern.compile("N-[1-3][+]?+;[H]{0,2}+[A-Za-z]{0,6}+[(].*+%C.*+%N.*+"));
            //NC#N N->CN
            atomTypePatterns.add(Pattern.compile("N-3[+];=OCO-.*+"));
            //n no2
            atomTypePatterns.add(Pattern.compile("N-2;[A-Z[^O]]{0,1}=O[A-Z[^O]]{0,1}[(].*+"));
            //n N=O
            atomTypePatterns.add(Pattern.compile("N-[1-3];[CH]{1,3}.{1}+[A-Z]{0,3}+[,]?+=OC.*+"));
            //NC=0 amid 
            atomTypePatterns.add(Pattern.compile("N-1-2];[CH]{1}+=S[(].*+"));
            //NSO (50)
            atomTypePatterns.add(Pattern.compile("N-[1-3][+];[H]{0,2}+=[A-Za-z]{1,3}+[(].*+"));
            //n N+=  
            atomTypePatterns.add(Pattern.compile("N-[0-3][+];[H]{0,2}+=C[(][A-Za-z[^=%N]]{0,7}[N]{1}+/.*+"));
            //n NCN+
            atomTypePatterns.add(Pattern.compile("N-[0-3][+];[H]{0,2}+=C[(][N]]{2}+/.*+"));
            //n NGD+
            atomTypePatterns.add(Pattern.compile("N-[1-2][+];[H]{0,1}+%[NC][-]?+[(].*+"));
            //NR% n in isonitrile, diazo
            atomTypePatterns.add(Pattern.compile("N-[1-2][-];[H]{0,1}+S[A-Z]{0,1}+[(][H]{0,4}+=?+O[-]?+.*+"));
            //NM n deproonated sulfonamid
            atomTypePatterns.add(Pattern.compile("N-[2][-];.*+"));
            //N5M neg charged n
            atomTypePatterns.add(Pattern.compile("N-[2-3];[H]{0,1}+[A-Za-z[^N]]{2,3}+[(].*+"));
            //NPYD n aromatic 6
            atomTypePatterns.add(Pattern.compile("N-[2-3];[H]{0,1}+[A-Za-z[^N]]{2,3}+[(].*+"));
            //NPYL n aromtiac 5
            atomTypePatterns.add(Pattern.compile("N-[2-3][+];[H]{0,1}+[A-Za-z[^NO]]{2,3}+[(].*+"));
            //n npyd+ NCN+ Pyrimidinium
            atomTypePatterns.add(Pattern.compile("N-[2-3][+]?+;[H]{0,1}+=?+[N,O,S]{0,1}+[+]?+=?+C[+]?+[N,O,S]{0,1}+[(].*+"));
            //N5A n aromatic 5 CN=N (60)
            atomTypePatterns.add(Pattern.compile("N-[2,3];[H]{0,1}+=CC[(][H]{0,3}+=?+[A-Z[^C]].*+"));
            //N5B n aromatic 5 N=CN
            atomTypePatterns.add(Pattern.compile("N-[3][+];[A-Z[^ON]]{2}+O[-]?+[(].*+"));
            //NPOX n aromatic n oxide aromatic 6 ring -> configure
            atomTypePatterns.add(Pattern.compile("N-[3][+];[A-Z[^ON]]{2}+O[-]?+[(].*+"));
            //N5Ox
            atomTypePatterns.add(Pattern.compile("NO PATTERN"));
            //N5+
            atomTypePatterns.add(Pattern.compile("N-[1-3];[H]{0,1}+[A-Za-z]++[(].*+"));
            //N5 (65)
            
            atomTypePatterns.add(Pattern.compile("S-[1-2];[HCNO]{1,2}+[+]?+[(].*+"));
            //S thioether, mercaptane
            atomTypePatterns.add(Pattern.compile("S-[1];[H]{0,2}+=C.*+"));
            //terminal S=C
            atomTypePatterns.add(Pattern.compile("S-[1-3];[H]{0,2}+=[ON].*+"));
            //>SN
            atomTypePatterns.add(Pattern.compile("S-[3-4];[H]{0,2}+=[OCN]=[OCN]=?+[OCN]{0,2}+[(].*+"));
            //SO2
            atomTypePatterns.add(Pattern.compile("S-[1-2][-]?+;[H]{0,1}+[A-Za-z]{0,2}+[(].*+"));
            //temrinal SX (70)
            atomTypePatterns.add(Pattern.compile("S-[3];=OO[-]?+[A-Za-z]{1,2}+[-]?+[(].*+"));
            //S SO2 in negativly charged SO2R group
            atomTypePatterns.add(Pattern.compile("S-[2];=[A-Za-z]{1,2}=O+[(].*+"));
            //=SO
            atomTypePatterns.add(Pattern.compile("S-[2];[H]{0,3}+=C.*+"));
            //Stringin thiophen (73)
            
            atomTypePatterns.add(Pattern.compile("P-[4];.*+"));
            //P tetra ->configure Atom for P
            atomTypePatterns.add(Pattern.compile("P-[0-3];.*+"));
            //P tri -> configure atom for P=C
            atomTypePatterns.add(Pattern.compile("P-[2];=C[A-Za-z]{1,2}+[(].*+"));
            //P C=P-          
            atomTypePatterns.add(Pattern.compile("F-[0-7][+]?+;.*+"));
            //F
            atomTypePatterns.add(Pattern.compile("Cl-[0-7][+]?+;.*+"));
            //Cl
            atomTypePatterns.add(Pattern.compile("Br-[0-7][+]?+;.*+"));
            //Br
            atomTypePatterns.add(Pattern.compile("I.*+"));
            //I         
            atomTypePatterns.add(Pattern.compile("Si.*+"));
            //Silane
            atomTypePatterns.add(Pattern.compile("Cl[4];.*+"));
            //cl in perchlorat anion
            atomTypePatterns.add(Pattern.compile("Fe2[+].*+"));
            //Fe 2
            atomTypePatterns.add(Pattern.compile("Fe3[+].*+"));
            //Fe 3
            atomTypePatterns.add(Pattern.compile("F-[0-2][-];.*+"));
            //F
            atomTypePatterns.add(Pattern.compile("Cl-[0-2][-];.*+"));
            //Cl
            atomTypePatterns.add(Pattern.compile("Br-[0-2][-];.*+"));
            //Br
            atomTypePatterns.add(Pattern.compile("Li-[0-2][+];.*+"));
            //Li+
            atomTypePatterns.add(Pattern.compile("Na[+];.*+"));
            //Na+
            atomTypePatterns.add(Pattern.compile("K[+];.*+"));
            //K+
            atomTypePatterns.add(Pattern.compile("Zn2[+];.*+"));
            //Zn2+
            atomTypePatterns.add(Pattern.compile("Ca2[+];.*+"));
            //Ca2+
            atomTypePatterns.add(Pattern.compile("Cu[+];.*+"));
            //Cu1+
            atomTypePatterns.add(Pattern.compile("Cu2[+];.*+"));
            //Cu2+
            atomTypePatterns.add(Pattern.compile("Mg2[+];.*+"));
            //Mg2+
      }
}


Generated by  Doxygen 1.6.0   Back to index