pren / poltype

POLTYPE: AMOEBA parametrization tool
https://pren.github.io/poltype
Other
4 stars 11 forks source link

Case with 3 elements in multipole from .keyb #30

Closed mquevill closed 4 years ago

mquevill commented 4 years ago

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.zip

Snippet from the no3.keyb file that threw the error:

multipole     1                         1.09799
                                        0.00000    0.00000   -0.00165
                                        0.00000
                                        0.00000    0.00000
                                        0.00000    0.00000    0.00000
leucinw commented 4 years ago

This is one of the special cases that we have to use charge only, due to lack of multipole frame definition. Poltype will be modified to handle these cases.

pren commented 4 years ago

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

                                    0.00000    0.00000   -0.00165

                                    0.00000

                                    0.00000    0.00000

                                    0.00000    0.00000    0.00000

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVXPFRGIK6MSKE2UBLR4XBKHANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

pren commented 4 years ago

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Your activity your_activity@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVXPFRGIK6MSKE2UBLR4XBKHANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-661994616, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRJPUBT5C3MLFBJWNDR4XE57ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

pren commented 4 years ago

We have to use charge only (0 0 frame) for now because during molecular dynamics, when the NO3 plane goes perfect flat, the trisector can experience singularity.

From: Pengyu Ren notifications@github.com Sent: Tuesday, July 21, 2020 12:25 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Your activity your_activity@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVXPFRGIK6MSKE2UBLR4XBKHANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-661994616, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRJPUBT5C3MLFBJWNDR4XE57ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-661997081, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XWO3PUVBEO5PABRAC3R4XFORANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

jayponder commented 4 years ago

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Your activity your_activity@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

pren commented 4 years ago

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

jayponder commented 4 years ago

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty rigid and flat (and indeed the angle and out-of-plane parameters are very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

pren commented 4 years ago

I think the “norm of 3 atoms” for Z is OK. Probably need to re-derive torque to force conversion…

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 1:17 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty flat (and indeed the out-of-plane is very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662025638, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRWN26HKOOONT7JQ5LR4XLTBANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

jayponder commented 4 years ago

Yes, it would require simple changes to rotpole, and more difficult changes to the torque.

We’re going to need to borrow Chao! Or maybe since Chao already did the heavy lifting to get the 3-Fold torques for the current code, somebody could see if they can adapt his method. (When he first derived the 3-Fold case, I had a plaque made in honor of Chao with a wrench attached to it, proclaiming him to be the “Torque Master”) I’m not going to volunteer, at least in the immediate future..

What do you think about the nitrate parameters I attached. I know you are not fond of “symmetry violations”, but the nitrate ion is really quite rigid. We have used those parameters. And I also gave them to Dave Case at some point, though I don’t know if he has actually tried them.

On Jul 21, 2020, at 1:28 PM, Pengyu Ren notifications@github.com wrote:

I think the “norm of 3 atoms” for Z is OK. Probably need to re-derive torque to force conversion…

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 1:17 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty flat (and indeed the out-of-plane is very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662025638, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRWN26HKOOONT7JQ5LR4XLTBANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

pren commented 4 years ago

For the N, I don’t think there can be quadrupoles if there are three atom “2” that are the same?

For the O (type 2), I would think it has to be Z-only (O N), again sine the other two Os (2) are the same? This requires XX and YY components of quadruple to be the same.

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 1:37 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Yes, it would require changes to rotpole, and more of course to the torque.

We’re going to need to borrow Chao! Or maybe since Chao already did the heavy lifting to get the 3-Fold torques for the current code, somebody could see if they can adapt his method. (I actually had a plaque made in honor of Chao with a wrench attached to it, proclaiming him to be the “Torque Master”) I’m not going to volunteer, at least in the immediate future..

What do you think about the nitrate parameters I attached. I know you are not fond of “symmetry violations”, but the nitrate ion is really quite rigid. We have used those parameters. And I also gave them to Dave Case at some point, though I don’t know if he has actually use them.

On Jul 21, 2020, at 1:28 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

I think the “norm of 3 atoms” for Z is OK. Probably need to re-derive torque to force conversion…

From: Jay Ponder notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 1:17 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty flat (and indeed the out-of-plane is very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com<mailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com>>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>>>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu>> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662025638, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRWN26HKOOONT7JQ5LR4XLTBANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662035971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVYX34FAIYQOMGEXM3R4XN35ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

pren commented 4 years ago

I guess for N the X and Z is the plane and Qxx=Qzz (donut?) is OK. For O it is also OK if it is perfectly symmetric & flat…o So I think your multipoles are ok.

From: Pengyu Ren notifications@github.com Sent: Tuesday, July 21, 2020 1:51 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Your activity your_activity@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

For the N, I don’t think there can be quadrupoles if there are three atom “2” that are the same?

For the O (type 2), I would think it has to be Z-only (O N), again sine the other two Os (2) are the same? This requires XX and YY components of quadruple to be the same.

From: Jay Ponder notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 1:37 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Yes, it would require changes to rotpole, and more of course to the torque.

We’re going to need to borrow Chao! Or maybe since Chao already did the heavy lifting to get the 3-Fold torques for the current code, somebody could see if they can adapt his method. (I actually had a plaque made in honor of Chao with a wrench attached to it, proclaiming him to be the “Torque Master”) I’m not going to volunteer, at least in the immediate future..

What do you think about the nitrate parameters I attached. I know you are not fond of “symmetry violations”, but the nitrate ion is really quite rigid. We have used those parameters. And I also gave them to Dave Case at some point, though I don’t know if he has actually use them.

On Jul 21, 2020, at 1:28 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> wrote:

I think the “norm of 3 atoms” for Z is OK. Probably need to re-derive torque to force conversion…

From: Jay Ponder notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 1:17 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com<mailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty flat (and indeed the out-of-plane is very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com<mailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com<mailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com>>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>>> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>>> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>>>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com>>>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>>>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>>>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>>>>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu>>> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu>> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662025638, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRWN26HKOOONT7JQ5LR4XLTBANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662035971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVYX34FAIYQOMGEXM3R4XN35ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662042927, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XT6FHWNHROBDJSTKA3R4XPP5ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

jayponder commented 4 years ago

For the nitrogen, I think the “out-of-plane” diagonal quadrupole can be nonzero. If you do trisector, this would be the zz-quadrupole. For Z-then-X as in the parameters I sent, it’s the yy-quadrupole. In either case the other two diagonal quadrupoles should have opposite sign and half the magnitude. The good thing is that this out-of-plane quadrupole doesn’t change sign when the nitrogen inverts by making small motions above and below the plane of the oxygens. The whole point is to try to use something other than just a partial charge (“None” frame) on nitrogen.

For the oxygen, using Z-then-X, the z-axis will be in the direction of the nitrogen. The z-axis is thus defined and unique, so there can be a z-dipole and zz-quadrupole. The x-axis is (approximately) in the plane of the molecule, and the y-axis is roughly normal to the molecular plane. So you also get to have different xx- and yy-quadrupoles.

I believe the only issue with the parameters I suggest is the lack of “symmetry”. But again, I think that’s not a big deal and it’s (much) more important to do well on the electrostatic model.

On Jul 21, 2020, at 1:50 PM, Pengyu Ren notifications@github.com wrote:

For the N, I don’t think there can be quadrupoles if there are three atom “2” that are the same?

For the O (type 2), I would think it has to be Z-only (O N), again sine the other two Os (2) are the same? This requires XX and YY components of quadruple to be the same.

From: Jay Ponder notifications@github.com Sent: Tuesday, July 21, 2020 1:37 PM To: pren/poltype poltype@noreply.github.com Cc: Ren, Pengyu pren@utexas.edu; Comment comment@noreply.github.com Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Yes, it would require changes to rotpole, and more of course to the torque.

We’re going to need to borrow Chao! Or maybe since Chao already did the heavy lifting to get the 3-Fold torques for the current code, somebody could see if they can adapt his method. (I actually had a plaque made in honor of Chao with a wrench attached to it, proclaiming him to be the “Torque Master”) I’m not going to volunteer, at least in the immediate future..

What do you think about the nitrate parameters I attached. I know you are not fond of “symmetry violations”, but the nitrate ion is really quite rigid. We have used those parameters. And I also gave them to Dave Case at some point, though I don’t know if he has actually use them.

On Jul 21, 2020, at 1:28 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com> wrote:

I think the “norm of 3 atoms” for Z is OK. Probably need to re-derive torque to force conversion…

From: Jay Ponder notifications@github.com<mailto:notifications@github.com> Sent: Tuesday, July 21, 2020 1:17 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Pengyu, I think you are right about the method in the current code. Though in this case the “problem” is only when the molecule is exactly flat. An “inversion" at the nitrogen is OK, since you should never have a nonzero z-dipole for nitrate anyway.

An alternative (better?) way to do trisector would be to set the z-axis as perpendicular to the plane defined by the three nitrate oxygen atoms. You could do this after first normalizing the N-O distance to all be one, which the current trisector code already does. Then choose the “sign” of the z-axis based on whether the nitrogen atom lies above or below the plane of the oxygens. (When all atoms are in a plane, then the sign of the z-axis is undefined, but that’s OK as long as you don’t have a z-dipole, which you should not be using in that case.) This method of using the plane of the oxygens to set the z-axis is otherwise stable to the situation you describe (I think..). It would work for ammonia too, although it does not solve the discontinuity with the dipoles flipping sign when the ammonia inverts that was discussed yesterday, so again the z-dipole would need to be zero.

We have previously done nitrate ion, and have used the parameters below. This is based on a simple Z-then-X frame at both N and O. And, yes, this is “unsymmetrical” but as long as the ion is pretty flat (and indeed the out-of-plane is very large when fit to QM..) I think it’s OK. My feeling is that the minor violation of symmetry is a reasonable price to pay for getting the better electrostatics on nitrogen.

#########################################

AMOEBA Parameters for Nitrate Ion

#########################################

atom 1 1 N "Nitrate N" 7 14.007 3 atom 2 2 O "Nitrate O" 8 15.999 1

vdw 1 3.7100 0.1100 vdw 2 3.5100 0.1120

bond 1 2 390.0 1.2606 angle 2 1 2 155.00 120.00 strbnd 2 1 2 18.70 18.70 opbend 2 1 2 2 172.00

multipole 1 2 2 1.07363 0.00000 0.00000 0.00000 0.14407 0.00000 -0.28814 0.00000 0.00000 0.14407

multipole 2 1 2 -0.69121 0.00000 0.00000 0.04941 -0.50067 0.00000 -0.08271 0.00000 0.00000 0.58338

polarize 1 1.0730 0.3900 2 polarize 2 0.8370 0.3900 1

On Jul 21, 2020, at 12:51 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> wrote:

Jay The trisector calculation has to be “smooth” between flat and non-flat structures in MD. The trisector is the average of 3 N-O vectors when 3 vectors are not in the same plane. But it would be “0” is the 3 N-O is symmetric and flat. When its flat but the 3 O-N-O angles are all different, the trisector(average of 3) would be a vector in the same plane, instead of norm to the plane. So I don’t think we can use trisector for something goes from non-flat to flat (inverting) just like no Z-bisector frame for amine.

Pengyu

From: Jay Ponder notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com>> Sent: Tuesday, July 21, 2020 12:41 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>; Comment comment@noreply.github.com<mailto:comment@noreply.github.com<mailto:comment@noreply.github.com%3cmailto:comment@noreply.github.com>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

Hi,

Yes, the “trisector” frame, which is called 3-Fold internally in the Tinker code, is better for the nitrate ion nitrogen. It would allow you to have a nonzero zz-quadrupole, which I might guess could be significant in nitrate (?).

The 3-Fold local frame certainly should be stable to all atoms being exactly in the same plane, but this should be checked. The only drawback to 3-Fold is that the torque calculation is significantly more complex than for the other local frames. But that really shouldn’t affect overall performance.

As Pengyu notes, if you do use a “None” frame as in the parameters listed below, then the small z-dipole value should be set to zero. Tinker will not do this automatically. Tinker could easily enforce such zeroing in those kinds of cases, but I’ve always preferred to not force that in the code as there are (rare) cases where you might want to break “symmetry”.

Best, Jay

On Jul 21, 2020, at 12:24 PM, Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> wrote:

Another (better) option for N is to use trisector as Z frame given the 3 O atoms are treated the same.

https://github.com/pren/poltype/blob/gh-pages/README_MULTIPOLE.MD (bottom right)

From: Pengyu Ren notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>> Sent: Tuesday, July 21, 2020 12:21 PM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>> Cc: Ren, Pengyu pren@utexas.edu<mailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu<mailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu%3cmailto:pren@utexas.edu>>>; Your activity your_activity@noreply.github.com<mailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com<mailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com%3cmailto:your_activity@noreply.github.com>>> Subject: Re: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

N in NO3- can only have charge (no frames) due to symmetry. It should be like a single ion /or nobel gas atom. In tinker you can do N 0 0 charge 0 0 0 … or just N charge 0 0 0 … So the output format below is actually OK. We can add “0 )” to make it more clear. The tiny dipole_z should be set to 0 (I am not sure Tinker ignores it internally and Z axis is arbitrary now)

Pengyu

From: Michael Quevillon notifications@github.com<mailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com<mailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com%3cmailto:notifications@github.com>>>> Sent: Tuesday, July 21, 2020 11:50 AM To: pren/poltype poltype@noreply.github.com<mailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com<mailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com%3cmailto:poltype@noreply.github.com>>>> Cc: Subscribed subscribed@noreply.github.com<mailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com<mailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com%3cmailto:subscribed@noreply.github.com>>>> Subject: [pren/poltype] Case with 3 elements in multipole from .keyb (#30)

In multipole.py (lines of interest shown below), when reading from the .keyb file, I ran into a case where tmplst only had 3 elements, so the variable atmidx was not set properly. This caused an error: UnboundLocalError: local variable 'atmidx' referenced before assignment

https://github.com/pren/poltype/blob/a7ae210c24890ed3c8edcdd5740f6b5b36ae437a/PoltypeModules/multipole.py#L386-L396

I have attached the no3.sdf and poltype.ini I used to run, also the no3.keyb file that was generated are here: no3.ziphttps://github.com/pren/poltype/files/4954948/no3.zip

Snippet from the no3.keyb file that threw the error:

multipole 1 1.09799

0.00000 0.00000 -0.00165

0.00000

0.00000 0.00000

0.00000 0.00000 0.00000

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu>> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662006362, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVSXJL7T7IZKZN5IADR4XHLLANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu<mailto:ponder@dasher.wustl.edu%3cmailto:ponder@dasher.wustl.edu> St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662025638, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XRWN26HKOOONT7JQ5LR4XLTBANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edumailto:ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/pren/poltype/issues/30#issuecomment-662035971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABNC6XVYX34FAIYQOMGEXM3R4XN35ANCNFSM4PDZJT3A.

This message is from an external sender. Learn more about why this matters.https://ut.service-now.com/sp?id=kb_article&number=KB0011401

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

-- Jay W. Ponder Phone: 1-314-935 4275 Chemistry, Campus Box 1134 Fax: 1-314-935 4481 Washington University in St. Louis One Brookings Drive Email: ponder@dasher.wustl.edu St. Louis, Missouri 63130 USA WWW: http://dasher.wustl.edu/

misterbrandonwalker commented 4 years ago

multipole 401 1.26710 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

correct output now