[Rdkit-discuss] MMFF bond parameters

2014-09-29 Thread Paul Emsley

Dear Paolo (I presume :-),

I'd like to get the ro values for the bonds in an MMFF.  I have the 
following so far:

void mmff_bonds(RDKit::ROMol mol_in) {

RDKit::MMFF::MMFFMolProperties *mmffMolProperties = new 
RDKit::MMFF::MMFFMolProperties(mol_in);
ForceFields::ForceField *field = new ForceFields::ForceField();
RDKit::MMFF::Tools::addBonds( mol_in, mmffMolProperties, field);

ForceFields::ContribPtrVect::const_iterator contrib;
for(contrib=field-contribs().begin();
contrib!=field-contribs().end();
contrib++)  {

   ForceFields::MMFF::MMFFBond *mmffBondParams;
   // something xxx!!!
   double d = something(contrib???)-calcBondRestLength(mmffBondParams);
}
}


As you can see, I got lost between contrib and bond parameters. Please 
can you tell me what I am missing?  I hope it's only a few lines - but I 
can't determine which ones :)

Thanks,

Paul.


--
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471iu=/4140/ostg.clktrk
___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


Re: [Rdkit-discuss] MMFF bond parameters

2014-09-29 Thread Paolo Tosco

Dear Paul,

I'm afraid currently there is no public method to get r0 and kb from 
ForceField contribs. I have attached a C++ sample program which shows 
how to get the information you need from a ROMol. Please feel free to 
contact me if you need further help.


Cheers,
p.

On 09/29/2014 07:36 PM, Paul Emsley wrote:

Dear Paolo (I presume :-),

I'd like to get the ro values for the bonds in an MMFF.  I have the
following so far:

void mmff_bonds(RDKit::ROMol mol_in) {

 RDKit::MMFF::MMFFMolProperties *mmffMolProperties = new
RDKit::MMFF::MMFFMolProperties(mol_in);
 ForceFields::ForceField *field = new ForceFields::ForceField();
 RDKit::MMFF::Tools::addBonds( mol_in, mmffMolProperties, field);

 ForceFields::ContribPtrVect::const_iterator contrib;
 for(contrib=field-contribs().begin();
 contrib!=field-contribs().end();
 contrib++)  {

ForceFields::MMFF::MMFFBond *mmffBondParams;
// something xxx!!!
double d = something(contrib???)-calcBondRestLength(mmffBondParams);
 }
}


As you can see, I got lost between contrib and bond parameters. Please
can you tell me what I am missing?  I hope it's only a few lines - but I
can't determine which ones :)

Thanks,

Paul.


--
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471iu=/4140/ostg.clktrk
___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss



--
==
Paolo Tosco, Ph.D.
Department of Drug Science and Technology
Via Pietro Giuria, 9 - 10125 Torino (Italy)
Tel: +39 011 670 7680 | Mob: +39 348 5537206
Fax: +39 011 670 7687 | E-mail: paolo.to...@unito.it
http://open3dqsar.org | http://open3dalign.org
==

/*
Build with:
g++ -Wall -o get_r0_kb get_r0_kb.cpp \
  -I$BOOST_INCLUDE -I$RDBASE/Code -L$BOOST_LIB -L$RDBASE/lib \
  -lFileParsers -lRDGeneral -lForceFieldHelpers
*/

#include GraphMol/RDKitBase.h
#include GraphMol/FileParsers/FileParsers.h
#include ForceField/MMFF/Params.h
#include ForceField/MMFF/Contribs.h
#include ForceField/MMFF/BondStretch.h
#include GraphMol/ForceFieldHelpers/MMFF/AtomTyper.h
#include GraphMol/ForceFieldHelpers/MMFF/Builder.h
#include ForceField/ForceField.h
#include string
#include iostream

using namespace RDKit;

int main(int argc, char **argv)
{
  std::stringstream ss;
  if (argc  2) {
std::cerr  Usage: get_r0_kb molFile  std::endl;
return 0;
  }
  std::string sdf(argv[1]);
  ROMol *mol = static_castROMol *(MolFileToMol(sdf, true, false));
  MMFF::MMFFMolProperties *mp = new MMFF::MMFFMolProperties(*mol);
  if (!(mp-isValid())) {
std::cerr  Error setting up force-field  std::endl;
  }
  else {
ForceFields::MMFF::MMFFBondCollection *mmffBond =
  ForceFields::MMFF::MMFFBondCollection::getMMFFBond();
std::cout  std::setw(8)  idx1  std::setw(8)  idx2
   std::setw(8)  r0  std::setw(8)  kb  std::endl;
for (ROMol::BondIterator bi = mol-beginBonds();
  bi != mol-endBonds(); ++bi) {
  unsigned int idx1 = (*bi)-getBeginAtomIdx();
  unsigned int idx2 = (*bi)-getEndAtomIdx();
  unsigned int iAtomType = mp-getMMFFAtomType(idx1);
  unsigned int jAtomType = mp-getMMFFAtomType(idx2);
  unsigned int bondType = mp-getMMFFBondType(*bi);
  bool areMMFFBondParamsEmpirical = false;
  const ForceFields::MMFF::MMFFBond *mmffBondParams =
  (*mmffBond)(bondType, iAtomType, jAtomType);
  if (!mmffBondParams) {
mmffBondParams = mp-getMMFFBondStretchEmpiricalRuleParams(*mol, *bi);
areMMFFBondParamsEmpirical = true;
  }
  double r0 = ForceFields::MMFF::Utils::calcBondRestLength(mmffBondParams);
  double kb = ForceFields::MMFF::Utils::calcBondForceConstant(mmffBondParams);
  if (areMMFFBondParamsEmpirical) {
delete mmffBondParams;
  }
  std::cout  std::setw(8)  idx1 + 1  std::setw(8)  idx2 + 1
 std::setw(8)  std::fixed  std::setprecision(4)  r0
 std::setw(8)  std::fixed  std::setprecision(4)  kb
 std::endl;
}
  }
  if (mp) delete mp;
  if (mol) delete mol;
  
  return 0;
}
--
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471iu=/4140/ostg.clktrk___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


Re: [Rdkit-discuss] MMFF bond parameters

2014-09-29 Thread Paul Emsley
On 30/09/14 00:15, Paolo Tosco wrote:

 I'm afraid currently there is no public method to get r0 and kb from 
 ForceField contribs. I have attached a C++ sample program which shows 
 how to get the information you need from a ROMol.

Ah! -  His eyes opened!

Thanks very much.

P.


--
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311iu=/4140/ostg.clktrk
___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss