rotamer.h Source File

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

rotamer.h
Go to the documentation of this file.

    00001 /**********************************************************************
    00002 rotamer.h - Handle rotamer list data.
    00003
    00004 Copyright (C) 1998-2000 by OpenEye Scientific Software, Inc.
    00005 Some portions Copyright (C) 2001-2006 by Geoffrey R. Hutchison
    00006
    00007 This file is part of the Open Babel project.
    00008 For more information, see <http://openbabel.org/>
    00009
    00010 This program is free software; you can redistribute it and/or modify
    00011 it under the terms of the GNU General Public License as published by
    00012 the Free Software Foundation version 2 of the License.
    00013
    00014 This program is distributed in the hope that it will be useful,
    00015 but WITHOUT ANY WARRANTY; without even the implied warranty of
    00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00017 GNU General Public License for more details.
    00018 ***********************************************************************/
    00019
    00020 #ifndef OB_ROTAMER_H
    00021 #define OB_ROTAMER_H
    00022
    00023 #include <vector>
    00024 #include <map>
    00025
    00026 #include <openbabel/mol.h>
    00027 #include <openbabel/rotor.h>
    00028 #include <openbabel/generic.h>
    00029
    00030 namespace OpenBabel
    00031 {
    00032
    00034   // Further class introduction in rotamer.cpp
    00035  class OBAPI OBRotamerList : public OBGenericData
    00036   {
    00038     unsigned int                         _NBaseCoords;
    00040     std::vector<double*>                 _c;
    00042     std::vector<std::pair<OBAtom**,std::vector<int> > > _vrotor;
    00045     std::vector<std::vector<double> >    _vres;
    00047     std::vector<unsigned char*>          _vrotamer;
    00048
    00049     /*Because contains OBAtom*, these aren't meaningful without knowing the parent molecule
    00050       OBRotamerList(const OBRotamerList &cpy) : OBGenericData(cpy)
    00051       {}
    00052       OBRotamerList& operator =(const OBRotamerList &)
    00053       {
    00054       return *this;
    00055       }
    00056                 */
    00057
    00058   public:
    00059     OBRotamerList()
    00060       {
    00061         _NBaseCoords=0;
    00062         _type= OBGenericDataType::RotamerList;
    00063         _attr="RotamerList";
    00064       }
    00065                 virtual OBGenericData* Clone(OBBase* parent) const;
    00066
    00067     ~OBRotamerList();
    00069     void Setup(OBMol&,OBRotorList&);
    00074     void Setup(OBMol &mol,unsigned char*ref,int nrotors);
    00076     unsigned int NumRotors()   const
    00077     {
    00078       return (unsigned int)_vrotor.size();
    00079     }
    00081     unsigned int NumRotamers() const
    00082     {
    00083       return (unsigned int)_vrotamer.size();
    00084     }
    00086     void AddRotamer(double*);
    00088     void AddRotamer(int *key);
    00090     void AddRotamer(std::vector<int> key);
    00092     void AddRotamer(unsigned char *key);
    00094     void AddRotamers(unsigned char *arr,int nconf);
    00096     void GetReferenceArray(unsigned char*) const;
    00097
    00099
    00100     std::vector<unsigned char*>::iterator BeginRotamer()
    00101       {
    00102         return _vrotamer.begin();
    00103       }
    00104     std::vector<unsigned char*>::iterator EndRotamer()
    00105       {
    00106         return _vrotamer.end();
    00107       }
    00109
    00112     std::vector<double*> CreateConformerList(OBMol& mol);
    00113
    00116     void ExpandConformerList(OBMol&mol,std::vector<double*>& confs);
    00117
    00118     void SetCurrentCoordinates(OBMol &mol, std::vector<int> arr);
    00119
    00122     void SetBaseCoordinateSets(OBMol& mol)
    00123     {
    00124       SetBaseCoordinateSets(mol.GetConformers(), mol.NumAtoms());
    00125     }
    00126
    00128
    00131     void SetBaseCoordinateSets(std::vector<double*> bc, unsigned int N);
    00132
    00134     unsigned int NumBaseCoordinateSets() const
    00135     {
    00136       return static_cast<unsigned int> (_c.size());
    00137     }
    00138
    00140     double *GetBaseCoordinateSet(unsigned int i) const
    00141     {
    00142       return (i<_c.size()) ? _c[i] : NULL;
    00143     }
    00144
    00146     unsigned int NumAtoms() const
    00147     {
    00148       return _NBaseCoords;
    00149     }
    00150   };
    00151
    00153   int Swab(int);
    00154
    00155 }
    00156
    00157 #endif // OB_ROTAMER_H
    00158

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines