Re: Freezing atoms during molecular mechanics

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
Tried to implement fixing atoms as part of a conformational search....
 as a straightforward
modification of the 'obconformer' tool.... but perhaps I'm missing
something.  I'm using the source from
openbabel-2.2.3


I simply added this (in the "while(ifs.peek() != EOF && ifs.good())" loop):

      OBFFConstraints constraints;
      int i = 0;
      for (i=1; i<=3; i++) {
          cout << " Fixing atom index " << i << "...\n";
          OBAtom *atom;
          atom = mol.GetAtom(i);
          if (!atom->IsHydrogen())
          {
             constraints.AddAtomConstraint(i);
          }
          else
          {
             cerr << "Error! heavy atoms first !" << endl;
          }
      }

      pFF->Setup(mol,constraints);
      pFF->WeightedRotorSearch(weightSteps, geomSteps);
      ...
      etc as in "tools/obconfomer.cpp"


and removed the old "pFF->Setup(mol);" statement

I tried this on a simple butane molecule (defined in a pdb), where the
first atoms listed are the carbon backbone, in linear order.

I'd expect this to "freeze" the first 3 carbon atoms, however, in the
output only 2 of the 4 carbon atoms are held in fixed position.  (The
first and the last carbons moved.)

Trying this approach to freeze all 4 of the carbon atoms, results in a
conformer where only 1 of the carbon atoms have moved. (The first
carbon moved.)

Anyone able to shed some light on this for me?  What am I missing?

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Noel O'Boyle
Administrator
I've never used OBConstraints, but just as general advice: when
setting up the forcefield, you should ensure that (a) the atoms have
3D coordinates, (b) hydrogens have already been added, and (c) that
calling the Setup function is successful.

 // We pass the constraints as argument for Setup()
      if (!pFF->Setup(mol, constraints)) {
      cerr << "ERROR: could not setup force field." << endl;
      }

- Noel

On 25 June 2010 01:03, Christopher Wassman <[hidden email]> wrote:

> Tried to implement fixing atoms as part of a conformational search....
>  as a straightforward
> modification of the 'obconformer' tool.... but perhaps I'm missing
> something.  I'm using the source from
> openbabel-2.2.3
>
>
> I simply added this (in the "while(ifs.peek() != EOF && ifs.good())" loop):
>
>      OBFFConstraints constraints;
>      int i = 0;
>      for (i=1; i<=3; i++) {
>          cout << " Fixing atom index " << i << "...\n";
>          OBAtom *atom;
>          atom = mol.GetAtom(i);
>          if (!atom->IsHydrogen())
>          {
>             constraints.AddAtomConstraint(i);
>          }
>          else
>          {
>             cerr << "Error! heavy atoms first !" << endl;
>          }
>      }
>
>      pFF->Setup(mol,constraints);
>      pFF->WeightedRotorSearch(weightSteps, geomSteps);
>      ...
>      etc as in "tools/obconfomer.cpp"
>
>
> and removed the old "pFF->Setup(mol);" statement
>
> I tried this on a simple butane molecule (defined in a pdb), where the
> first atoms listed are the carbon backbone, in linear order.
>
> I'd expect this to "freeze" the first 3 carbon atoms, however, in the
> output only 2 of the 4 carbon atoms are held in fixed position.  (The
> first and the last carbons moved.)
>
> Trying this approach to freeze all 4 of the carbon atoms, results in a
> conformer where only 1 of the carbon atoms have moved. (The first
> carbon moved.)
>
> Anyone able to shed some light on this for me?  What am I missing?
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> OpenBabel-discuss mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
Thanks for the advice.  I made the changes to my script and can
confirm that open babel thinks the force field was setup properly.

It's odd, the code seems to flag non-rotatable bonds based on which
atoms are fixed and un-fixed... but the rotor search is doing
something off in my mind.



On Mon, Jun 28, 2010 at 7:43 AM, Noel O'Boyle <[hidden email]> wrote:

> I've never used OBConstraints, but just as general advice: when
> setting up the forcefield, you should ensure that (a) the atoms have
> 3D coordinates, (b) hydrogens have already been added, and (c) that
> calling the Setup function is successful.
>
>  // We pass the constraints as argument for Setup()
>      if (!pFF->Setup(mol, constraints)) {
>      cerr << "ERROR: could not setup force field." << endl;
>      }
>
> - Noel
>
> On 25 June 2010 01:03, Christopher Wassman <[hidden email]> wrote:
>> Tried to implement fixing atoms as part of a conformational search....
>>  as a straightforward
>> modification of the 'obconformer' tool.... but perhaps I'm missing
>> something.  I'm using the source from
>> openbabel-2.2.3
>>
>>
>> I simply added this (in the "while(ifs.peek() != EOF && ifs.good())" loop):
>>
>>      OBFFConstraints constraints;
>>      int i = 0;
>>      for (i=1; i<=3; i++) {
>>          cout << " Fixing atom index " << i << "...\n";
>>          OBAtom *atom;
>>          atom = mol.GetAtom(i);
>>          if (!atom->IsHydrogen())
>>          {
>>             constraints.AddAtomConstraint(i);
>>          }
>>          else
>>          {
>>             cerr << "Error! heavy atoms first !" << endl;
>>          }
>>      }
>>
>>      pFF->Setup(mol,constraints);
>>      pFF->WeightedRotorSearch(weightSteps, geomSteps);
>>      ...
>>      etc as in "tools/obconfomer.cpp"
>>
>>
>> and removed the old "pFF->Setup(mol);" statement
>>
>> I tried this on a simple butane molecule (defined in a pdb), where the
>> first atoms listed are the carbon backbone, in linear order.
>>
>> I'd expect this to "freeze" the first 3 carbon atoms, however, in the
>> output only 2 of the 4 carbon atoms are held in fixed position.  (The
>> first and the last carbons moved.)
>>
>> Trying this approach to freeze all 4 of the carbon atoms, results in a
>> conformer where only 1 of the carbon atoms have moved. (The first
>> carbon moved.)
>>
>> Anyone able to shed some light on this for me?  What am I missing?
>>
>> ------------------------------------------------------------------------------
>> ThinkGeek and WIRED's GeekDad team up for the Ultimate
>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
>> lucky parental unit.  See the prize list and enter to win:
>> http://p.sf.net/sfu/thinkgeek-promo
>> _______________________________________________
>> OpenBabel-discuss mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
In reply to this post by Noel O'Boyle
Here's a bit more info, perhaps useful...

For whatever reason

Inside of
OBRotorList::FindRotors

The call to HasFixedAtoms() returns false, even though I've previously
specified constraints to the setup of the force field.

So... it seem that _fix is empy (HasFixedAtoms() is declared in
include/openbabel/rotor.h)

Seems _fix is not in sync with _constraints._fixed

Anyway, it would seem that the rotor search codes should be calling
OBRotorList.SetFixAtoms(...) specifying the _fixed OBBitVec from
_constraints... but I can't find any where they are doing so.

At least that's my naive take on it.  I must admit my C++ is very
rusty and I've just started looking at this code base last week, so
take this with the appropriate caution. :)

Cheers,
Chris.

On Mon, Jun 28, 2010 at 7:43 AM, Noel O'Boyle <[hidden email]> wrote:

> I've never used OBConstraints, but just as general advice: when
> setting up the forcefield, you should ensure that (a) the atoms have
> 3D coordinates, (b) hydrogens have already been added, and (c) that
> calling the Setup function is successful.
>
>  // We pass the constraints as argument for Setup()
>      if (!pFF->Setup(mol, constraints)) {
>      cerr << "ERROR: could not setup force field." << endl;
>      }
>
> - Noel
>
> On 25 June 2010 01:03, Christopher Wassman <[hidden email]> wrote:
>> Tried to implement fixing atoms as part of a conformational search....
>>  as a straightforward
>> modification of the 'obconformer' tool.... but perhaps I'm missing
>> something.  I'm using the source from
>> openbabel-2.2.3
>>
>>
>> I simply added this (in the "while(ifs.peek() != EOF && ifs.good())" loop):
>>
>>      OBFFConstraints constraints;
>>      int i = 0;
>>      for (i=1; i<=3; i++) {
>>          cout << " Fixing atom index " << i << "...\n";
>>          OBAtom *atom;
>>          atom = mol.GetAtom(i);
>>          if (!atom->IsHydrogen())
>>          {
>>             constraints.AddAtomConstraint(i);
>>          }
>>          else
>>          {
>>             cerr << "Error! heavy atoms first !" << endl;
>>          }
>>      }
>>
>>      pFF->Setup(mol,constraints);
>>      pFF->WeightedRotorSearch(weightSteps, geomSteps);
>>      ...
>>      etc as in "tools/obconfomer.cpp"
>>
>>
>> and removed the old "pFF->Setup(mol);" statement
>>
>> I tried this on a simple butane molecule (defined in a pdb), where the
>> first atoms listed are the carbon backbone, in linear order.
>>
>> I'd expect this to "freeze" the first 3 carbon atoms, however, in the
>> output only 2 of the 4 carbon atoms are held in fixed position.  (The
>> first and the last carbons moved.)
>>
>> Trying this approach to freeze all 4 of the carbon atoms, results in a
>> conformer where only 1 of the carbon atoms have moved. (The first
>> carbon moved.)
>>
>> Anyone able to shed some light on this for me?  What am I missing?
>>
>> ------------------------------------------------------------------------------
>> ThinkGeek and WIRED's GeekDad team up for the Ultimate
>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
>> lucky parental unit.  See the prize list and enter to win:
>> http://p.sf.net/sfu/thinkgeek-promo
>> _______________________________________________
>> OpenBabel-discuss mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
OK, this seems to work.... so here's a description of my patch.

I edited "include/openbabel.forcefield.h", adding a simple function:
   "OBBitVec &GetFixedBitVec() { return _fixed; }"

I edited "src/forcefield.cpp", adding this line:
   rl.SetFixAtoms(_constraints.GetFixedBitVec());

to each of the following three functions, immediately preceding the
call to "rl.Setup(_mol);":
   OBForceField::SystematicRotorSearchInitialize
   OBForceField::RandomRotorSearchInitialize
   OBForceField::WeightedRotorSearch



And the conformer search routines now appear to respect fixed atom
constraints. :)

Hopefully this is an appropriate place to post such modifications.

Let me know what you think.

Cheers,
Chris

On Tue, Jun 29, 2010 at 12:14 PM, Christopher Wassman
<[hidden email]> wrote:

> Here's a bit more info, perhaps useful...
>
> For whatever reason
>
> Inside of
> OBRotorList::FindRotors
>
> The call to HasFixedAtoms() returns false, even though I've previously
> specified constraints to the setup of the force field.
>
> So... it seem that _fix is empy (HasFixedAtoms() is declared in
> include/openbabel/rotor.h)
>
> Seems _fix is not in sync with _constraints._fixed
>
> Anyway, it would seem that the rotor search codes should be calling
> OBRotorList.SetFixAtoms(...) specifying the _fixed OBBitVec from
> _constraints... but I can't find any where they are doing so.
>
> At least that's my naive take on it.  I must admit my C++ is very
> rusty and I've just started looking at this code base last week, so
> take this with the appropriate caution. :)
>
> Cheers,
> Chris.
>
> On Mon, Jun 28, 2010 at 7:43 AM, Noel O'Boyle <[hidden email]> wrote:
>> I've never used OBConstraints, but just as general advice: when
>> setting up the forcefield, you should ensure that (a) the atoms have
>> 3D coordinates, (b) hydrogens have already been added, and (c) that
>> calling the Setup function is successful.
>>
>>  // We pass the constraints as argument for Setup()
>>      if (!pFF->Setup(mol, constraints)) {
>>      cerr << "ERROR: could not setup force field." << endl;
>>      }
>>
>> - Noel
>>
>> On 25 June 2010 01:03, Christopher Wassman <[hidden email]> wrote:
>>> Tried to implement fixing atoms as part of a conformational search....
>>>  as a straightforward
>>> modification of the 'obconformer' tool.... but perhaps I'm missing
>>> something.  I'm using the source from
>>> openbabel-2.2.3
>>>
>>>
>>> I simply added this (in the "while(ifs.peek() != EOF && ifs.good())" loop):
>>>
>>>      OBFFConstraints constraints;
>>>      int i = 0;
>>>      for (i=1; i<=3; i++) {
>>>          cout << " Fixing atom index " << i << "...\n";
>>>          OBAtom *atom;
>>>          atom = mol.GetAtom(i);
>>>          if (!atom->IsHydrogen())
>>>          {
>>>             constraints.AddAtomConstraint(i);
>>>          }
>>>          else
>>>          {
>>>             cerr << "Error! heavy atoms first !" << endl;
>>>          }
>>>      }
>>>
>>>      pFF->Setup(mol,constraints);
>>>      pFF->WeightedRotorSearch(weightSteps, geomSteps);
>>>      ...
>>>      etc as in "tools/obconfomer.cpp"
>>>
>>>
>>> and removed the old "pFF->Setup(mol);" statement
>>>
>>> I tried this on a simple butane molecule (defined in a pdb), where the
>>> first atoms listed are the carbon backbone, in linear order.
>>>
>>> I'd expect this to "freeze" the first 3 carbon atoms, however, in the
>>> output only 2 of the 4 carbon atoms are held in fixed position.  (The
>>> first and the last carbons moved.)
>>>
>>> Trying this approach to freeze all 4 of the carbon atoms, results in a
>>> conformer where only 1 of the carbon atoms have moved. (The first
>>> carbon moved.)
>>>
>>> Anyone able to shed some light on this for me?  What am I missing?
>>>
>>> ------------------------------------------------------------------------------
>>> ThinkGeek and WIRED's GeekDad team up for the Ultimate
>>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
>>> lucky parental unit.  See the prize list and enter to win:
>>> http://p.sf.net/sfu/thinkgeek-promo
>>> _______________________________________________
>>> OpenBabel-discuss mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>>
>>
>>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Geoffrey Hutchison
> I edited "src/forcefield.cpp", adding this line:
>   rl.SetFixAtoms(_constraints.GetFixedBitVec());

Well, that's not quite kosher, since the constraints will return a temporary variable, and SetFixAtoms wants a reference. It's easy to fix, though.

> Hopefully this is an appropriate place to post such modifications.

The best place is openbabel-devel or the patch tracker, but we certainly follow openbabel-general too. :-)

> Let me know what you think.

Thanks, it's good to get the right hand talking to the left hand (as far as freezing atoms goes).

Best regards,
-Geoff
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Tim Vandermeersch
On Wed, Jun 30, 2010 at 6:05 AM, Geoffrey Hutchison
<[hidden email]> wrote:
>> I edited "src/forcefield.cpp", adding this line:
>>   rl.SetFixAtoms(_constraints.GetFixedBitVec());
>
> Well, that's not quite kosher, since the constraints will return a temporary variable, and SetFixAtoms wants a reference. It's easy to fix, though.

Yes, I'll commit a slightly modified version later today.

Thanks for the suggestion, not sure why we haven't done this before.

Tim

>> Hopefully this is an appropriate place to post such modifications.
>
> The best place is openbabel-devel or the patch tracker, but we certainly follow openbabel-general too. :-)
>
>> Let me know what you think.
>
> Thanks, it's good to get the right hand talking to the left hand (as far as freezing atoms goes).
>
> Best regards,
> -Geoff
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> OpenBabel-discuss mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
Looks like Geoff already committed some changes into svn.

You guys rock.

Cheers,
Chris.

On Wed, Jun 30, 2010 at 9:14 AM, Tim Vandermeersch
<[hidden email]> wrote:

> On Wed, Jun 30, 2010 at 6:05 AM, Geoffrey Hutchison
> <[hidden email]> wrote:
>>> I edited "src/forcefield.cpp", adding this line:
>>>   rl.SetFixAtoms(_constraints.GetFixedBitVec());
>>
>> Well, that's not quite kosher, since the constraints will return a temporary variable, and SetFixAtoms wants a reference. It's easy to fix, though.
>
> Yes, I'll commit a slightly modified version later today.
>
> Thanks for the suggestion, not sure why we haven't done this before.
>
> Tim
>
>>> Hopefully this is an appropriate place to post such modifications.
>>
>> The best place is openbabel-devel or the patch tracker, but we certainly follow openbabel-general too. :-)
>>
>>> Let me know what you think.
>>
>> Thanks, it's good to get the right hand talking to the left hand (as far as freezing atoms goes).
>>
>> Best regards,
>> -Geoff
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Sprint
>> What will you do first with EVO, the first 4G phone?
>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>> _______________________________________________
>> OpenBabel-discuss mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Tim Vandermeersch
On Wed, Jun 30, 2010 at 9:28 PM, Christopher Wassman
<[hidden email]> wrote:
> Looks like Geoff already committed some changes into svn.

I don't like the way fixed atoms are translated to fixed bonds though.
To fix a bond, at least 4 atoms need to be fixed. But even if we
changed this to 2, there are still ambiguous cases.

For example take a octane molecule with carbon atom indexes 1-8. There
are 5 rotor bonds (terminal bonds to methyl are not rotors). If a user
wishes to only rotate the middle bond (C4-C5), there is no way to
specify this. Perhaps we need to add new constraint type to fix rotor
bonds explicitly.

C1-C2-C3-C4-C5-C6-C7-C8

Suggestions?

Tim

> You guys rock.
>
> Cheers,
> Chris.
>
> On Wed, Jun 30, 2010 at 9:14 AM, Tim Vandermeersch
> <[hidden email]> wrote:
>> On Wed, Jun 30, 2010 at 6:05 AM, Geoffrey Hutchison
>> <[hidden email]> wrote:
>>>> I edited "src/forcefield.cpp", adding this line:
>>>>   rl.SetFixAtoms(_constraints.GetFixedBitVec());
>>>
>>> Well, that's not quite kosher, since the constraints will return a temporary variable, and SetFixAtoms wants a reference. It's easy to fix, though.
>>
>> Yes, I'll commit a slightly modified version later today.
>>
>> Thanks for the suggestion, not sure why we haven't done this before.
>>
>> Tim
>>
>>>> Hopefully this is an appropriate place to post such modifications.
>>>
>>> The best place is openbabel-devel or the patch tracker, but we certainly follow openbabel-general too. :-)
>>>
>>>> Let me know what you think.
>>>
>>> Thanks, it's good to get the right hand talking to the left hand (as far as freezing atoms goes).
>>>
>>> Best regards,
>>> -Geoff
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by Sprint
>>> What will you do first with EVO, the first 4G phone?
>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>> _______________________________________________
>>> OpenBabel-discuss mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>>
>>
>>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Freezing atoms during molecular mechanics

Christopher Wassman
Interesting point.  I had not considered to separate fixed segments.

Fixing the rotor bonds explicitly is likely the best option as a more
generic approach.

Small question arises as to whether or not to atoms connected to these
"fixed rotor bonds" should be allowed to move during the molecular
mechanics energy minimization cleanups that occur in the rotor search
code.  (My vote would be for a true/false option with the default to
true.)

Somewhat of an aside:

The only alternative I can come up with is specifying some sort of
"rigid body" constraint which accepts N atoms, all which all must be
connected (with associated validation code), and then fixed bonds
inferred from these "rigid body" constraints.  This may or may not be
an easier adaptation of the code base.

This whole thread has me thinking of coding some simple monte carlo
simulation code in here too.

Cheers,
Chris.


On Wed, Jun 30, 2010 at 3:48 PM, Tim Vandermeersch
<[hidden email]> wrote:

> On Wed, Jun 30, 2010 at 9:28 PM, Christopher Wassman
> <[hidden email]> wrote:
>> Looks like Geoff already committed some changes into svn.
>
> I don't like the way fixed atoms are translated to fixed bonds though.
> To fix a bond, at least 4 atoms need to be fixed. But even if we
> changed this to 2, there are still ambiguous cases.
>
> For example take a octane molecule with carbon atom indexes 1-8. There
> are 5 rotor bonds (terminal bonds to methyl are not rotors). If a user
> wishes to only rotate the middle bond (C4-C5), there is no way to
> specify this. Perhaps we need to add new constraint type to fix rotor
> bonds explicitly.
>
> C1-C2-C3-C4-C5-C6-C7-C8
>
> Suggestions?
>
> Tim
>
>> You guys rock.
>>
>> Cheers,
>> Chris.
>>
>> On Wed, Jun 30, 2010 at 9:14 AM, Tim Vandermeersch
>> <[hidden email]> wrote:
>>> On Wed, Jun 30, 2010 at 6:05 AM, Geoffrey Hutchison
>>> <[hidden email]> wrote:
>>>>> I edited "src/forcefield.cpp", adding this line:
>>>>>   rl.SetFixAtoms(_constraints.GetFixedBitVec());
>>>>
>>>> Well, that's not quite kosher, since the constraints will return a temporary variable, and SetFixAtoms wants a reference. It's easy to fix, though.
>>>
>>> Yes, I'll commit a slightly modified version later today.
>>>
>>> Thanks for the suggestion, not sure why we haven't done this before.
>>>
>>> Tim
>>>
>>>>> Hopefully this is an appropriate place to post such modifications.
>>>>
>>>> The best place is openbabel-devel or the patch tracker, but we certainly follow openbabel-general too. :-)
>>>>
>>>>> Let me know what you think.
>>>>
>>>> Thanks, it's good to get the right hand talking to the left hand (as far as freezing atoms goes).
>>>>
>>>> Best regards,
>>>> -Geoff
>>>> ------------------------------------------------------------------------------
>>>> This SF.net email is sponsored by Sprint
>>>> What will you do first with EVO, the first 4G phone?
>>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>>> _______________________________________________
>>>> OpenBabel-discuss mailing list
>>>> [hidden email]
>>>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>>>
>>>
>>>
>>
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
OpenBabel-discuss mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss