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

MMFF94ParametersCall.java

package org.openscience.cdk.modeling.builder3d;

import java.util.List;
import java.util.Map;

/**
 * Set the right atoms order to get the parameters.
 *
 * @author         chhoppe
 * @cdk.created    2004-10-8
 * @cdk.module     forcefield
 * @cdk.githash
 */
00014 public class MMFF94ParametersCall {
      
      private Map<String,List> pSet = null;
      //private final static double DEFAULT_BOND_LENGTH = 1.5;
      //private final static double DEFAULT_ANGLE = 90;                 // Only to test
      //private final static double DEFAULT_TORSION_ANGLE = 90;

      
      public MMFF94ParametersCall(){}


      /**
       * Initialize the AtomOrder class.
       * 
       * @param  parameterSet  Force Field parameter as Map
       */
00030       public void initialize(Map<String,List> parameterSet) {
            pSet = parameterSet;
      }


      /**
       *  Gets the bond parameter set.
       *
       * @param  id1            atom1 id
       * @param  id2            atom2 id
       * @return                The distance value from the force field parameter set
       * @exception  Exception  Description of the Exception
       */
00043       public List getBondData(String code, String id1, String id2) throws Exception {
            String dkey = "";
            if (pSet.containsKey(("bond" + code + ";" + id1 + ";" + id2))) {
                  dkey="bond" + code + ";" + id1 + ";" + id2;
            }else if (pSet.containsKey(("bond" + code + ";" + id2 + ";" + id1))) {
                  dkey = "bond" + code + ";" + id2 + ";" + id1;
            } /*else {
                  System.out.println("KEYError:Unknown distance key in pSet: " + code + ";" + id2 + " ;" + id1+" take default bon length:" + DEFAULT_BOND_LENGTH);
                  return DEFAULT_BOND_LENGTH;
                  }*/
            //logger.debug("dkey = " + dkey);
            return (List) pSet.get(dkey);
      }


      /**
       *  Gets the angle parameter set.
       *
       * @param  id1            ID from Atom 1.
       * @param  id2            ID from Atom 2.
       * @param  id3            ID from Atom 3.
       * @return                The angle data from the force field parameter set
       * @exception  Exception  Description of the Exception
       */
00067       public List getAngleData(String angleType, String id1, String id2, String id3) throws Exception {
            String akey = "";
            if (pSet.containsKey(("angle" + angleType + ";" + id1 + ";" + id2 + ";" + id3))) {
                  akey = "angle" + angleType + ";" + id1 + ";" + id2 + ";" + id3;
            } else if (pSet.containsKey(("angle" + angleType + ";" + id3 + ";" + id2 + ";" + id1))) {
                  akey = "angle" + angleType + ";" + id3 + ";" + id2 + ";" + id1;
            } /*else {
                  System.out.println("KEYErrorAngle:Unknown angle key in pSet: " + angleType + ";" + id1 + " ; " + id2 + " ; " + id3 +" take default angle:" + DEFAULT_ANGLE);
                  return (Vector)[DEFAULT_ANGLE,0,0];
                  }*/
            //logger.debug("angle key : " + akey);
            return (List) pSet.get(akey);
      }


      /**
       *  Gets the bond-angle interaction parameter set.
       *
       * @param  id1            ID from Atom 1.
       * @param  id2            ID from Atom 2.
       * @param  id3            ID from Atom 3.
       * @return                The bond-angle interaction data from the force field parameter set
       * @exception  Exception  Description of the Exception
       */
00091       public List getBondAngleInteractionData(String strbndType, String id1, String id2, String id3) throws Exception {
            String akey = "";
            if (pSet.containsKey(("strbnd" + strbndType + ";" + id1 + ";" + id2 + ";" + id3))) {
                  akey = "strbnd" + strbndType + ";" + id1 + ";" + id2 + ";" + id3;
            } else if (pSet.containsKey(("strbnd" + strbndType + ";" + id1 + ";" + id3 + ";" + id2))) {
                  akey = "strbnd" + strbndType + ";" + id1 + ";" + id3 + ";" + id2;
            } else if (pSet.containsKey(("strbnd" + strbndType + ";" + id2 + ";" + id1 + ";" + id3))) {
                  akey = "strbnd" + strbndType + ";" + id2 + ";" + id1 + ";" + id3;
            } else if (pSet.containsKey(("strbnd" + strbndType + ";" + id2 + ";" + id3 + ";" + id1))) {
                  akey = "strbnd" + strbndType + ";" + id2 + ";" + id3 + ";" + id1;
            } else if (pSet.containsKey(("strbnd" + strbndType + ";" + id3 + ";" + id1 + ";" + id2))) {
                  akey = "strbnd" + strbndType + ";" + id3 + ";" + id1 + ";" + id2;
            } else if (pSet.containsKey(("strbnd" + strbndType + ";" + id3 + ";" + id2 + ";" + id1))) {
                  akey = "strbnd" + strbndType + ";" + id3 + ";" + id2 + ";" + id1;
            } /*else {
                  System.out.println("KEYErrorAngle:Unknown angle key in pSet: " +id1 + " ; " + id2 + " ; " + id3+" take default angle:" + DEFAULT_ANGLE);
                  return (Vector)[DEFAULT_ANGLE,0,0];
                  }*/
            //logger.debug("akey : " + akey);
            return (List) pSet.get(akey);
      }
      

      /**
       * Gets the bond-angle interaction parameter set.
       *
       * @param  iR             ID from Atom 1.
       * @param  jR             ID from Atom 2.
       * @param  kR             ID from Atom 3.
       * @return                The bond-angle interaction data from the force field parameter set
       * @exception  Exception  Description of the Exception
       */
00123       public List getDefaultStretchBendData(int iR, int jR, int kR) throws Exception {
            String dfsbkey = "";
            if (pSet.containsKey(("DFSB" + iR + ";" + jR + ";" + kR))) {
                  dfsbkey = "DFSB" + iR + ";" + jR + ";" + kR;
            }  /*else {
                  System.out.println("KEYErrorDefaultStretchBend:Unknown default stretch-bend key in pSet: " + iR + " ; " + jR + " ; " + kR);
                  }*/
            //logger.debug("dfsbkey : " + dfsbkey);
            return (List) pSet.get(dfsbkey);
      }
      
            
      /**
       *  Gets the bond parameter set.
       *
       * @param  id1            atom1 id
       * @param  id2            atom2 id
       * @return                The distance value from the force field parameter set
       * @exception  Exception  Description of the Exception
       */
00143       public List getTorsionData(String code, String id1, String id2, String id3, String id4) throws Exception {
            String dkey = "";
            if (pSet.containsKey(("torsion" + code + ";" + id1 + ";" + id2 + ";" + id3 + ";" + id4))) {
                  dkey="torsion" + code + ";" + id1 + ";" + id2 + ";" + id3 + ";" + id4;
            }else if (pSet.containsKey(("torsion" + code + ";" + id4 + ";" + id3 + ";" + id2 + ";" + id1))) {
                  dkey = "torsion" + code + ";" + id4 + ";" + id3 + ";" + id2 + ";" + id1;
            }else if (pSet.containsKey(("torsion" + code + ";*;" + id2 + ";" + id3 + ";*"))) {
                  dkey="torsion" + code + ";*;" + id2 + ";" + id3 + ";*";
            }else if (pSet.containsKey(("torsion" + code + ";*;" + id3 + ";" + id2 + ";*"))) {
                  dkey = "torsion" + code + ";*;" + id3 + ";" + id2 + ";*";
            }else if (pSet.containsKey(("torsion" + 0 + ";*;" + id2 + ";" + id3 + ";*"))) {
                  dkey = "torsion" + 0 + ";*;" + id2 + ";" + id3 + ";*";
            }else if (pSet.containsKey(("torsion" + 0 + ";*;" + id3 + ";" + id2 + ";*"))) {
                  dkey = "torsion" + 0 + ";*;" + id3 + ";" + id2 + ";*";
            } /*else {
                  System.out.println("KEYError:Unknown distance key in pSet: torsion" + code + ";" + id1 + ";" + id2 + ";" + id3 + ";" + id4 + " take default torsion angle:" + DEFAULT_TORSION_ANGLES);
                  return DEFAULT_TORSION_ANGLE;
                  }*/
            //logger.debug("dkey = " + dkey);
            return (List) pSet.get(dkey);
      }
      
}



Generated by  Doxygen 1.6.0   Back to index