<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://biomolmd.org/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pren</id>
	<title>biowiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://biomolmd.org/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pren"/>
	<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php/Special:Contributions/Pren"/>
	<updated>2026-09-05T09:18:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2174</id>
		<title>Tinkermeeting:tinkermeeting2025</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2174"/>
		<updated>2026-04-10T18:55:53Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://physics.utdallas.edu/tinker-25-attendees/&lt;br /&gt;
[[File:TinkerMeeting 2025.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Participants ===&lt;br /&gt;
&lt;br /&gt;
* Rakhat Alakenova&lt;br /&gt;
* Jessica Arcudia&lt;br /&gt;
* Cole Allen&lt;br /&gt;
* Robert Best&lt;br /&gt;
* Margaret Blazhynska&lt;br /&gt;
* Anthony Bogetti&lt;br /&gt;
* Bernie Brooks&lt;br /&gt;
* Charlie Brooks&lt;br /&gt;
* Dave Case&lt;br /&gt;
* Côme Cattin&lt;br /&gt;
* Shubham Chatterjee&lt;br /&gt;
* Andrés Cisneros&lt;br /&gt;
* Yuvraj Dangat&lt;br /&gt;
* Tom Darden&lt;br /&gt;
* Julián Delgado&lt;br /&gt;
* Omar Demerdash&lt;br /&gt;
* Jose Alberto de la Paz&lt;br /&gt;
* Upeksha Dissanayake&lt;br /&gt;
* Alberto dos Santos&lt;br /&gt;
* Peter Eastman&lt;br /&gt;
* Shehen Fernando&lt;br /&gt;
* Mozhdeh Ghafari&lt;br /&gt;
* Jake Gissinger&lt;br /&gt;
* Mike Gilson&lt;br /&gt;
* Rose Gogal&lt;br /&gt;
* Hati Gokcan&lt;br /&gt;
* James Gonzales&lt;br /&gt;
* Nohad Gresh&lt;br /&gt;
* JC Gumbart&lt;br /&gt;
* Dave Hardy&lt;br /&gt;
* Zhecheng He&lt;br /&gt;
* Sahar Heidari&lt;br /&gt;
* Fariha Hossain&lt;br /&gt;
* Xuhui Huang&lt;br /&gt;
* Francis Jing&lt;br /&gt;
* Luc-Henri Jolly&lt;br /&gt;
* Hyunseo Kim&lt;br /&gt;
* Louis Lagardère&lt;br /&gt;
* Wan-Lu Li&lt;br /&gt;
* Chengwen Liu&lt;br /&gt;
* Ao Ma&lt;br /&gt;
* Priyanka Maharana&lt;br /&gt;
* Charles Mariasoosai&lt;br /&gt;
* Mauricio Martil&lt;br /&gt;
* Blake Mertz&lt;br /&gt;
* Ignacio Migliaro&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Shubham Mittal&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Mayar Mohamed&lt;br /&gt;
* Fernando Montalvillo&lt;br /&gt;
* Matthieu Montes&lt;br /&gt;
* Yinglong Miao&lt;br /&gt;
* Kwangho Nam&lt;br /&gt;
* Marjan Nikpey&lt;br /&gt;
* Jorge Nochebuena&lt;br /&gt;
* Ignacio Pickering&lt;br /&gt;
* Jean-Philip Piquemal&lt;br /&gt;
* Thomas Plé&lt;br /&gt;
* Sarthi Polara&lt;br /&gt;
* Jay Ponder&lt;br /&gt;
* Josh Rackers&lt;br /&gt;
* Daniel Relix&lt;br /&gt;
* Pengyu Ren&lt;br /&gt;
* Demian Riccardi&lt;br /&gt;
* Julia Rice&lt;br /&gt;
* Benoit Roux&lt;br /&gt;
* Arkanil Roy&lt;br /&gt;
* Prasad Samarjeet&lt;br /&gt;
* Michael Schnieders&lt;br /&gt;
* Abeda Shamma&lt;br /&gt;
* Tejas Shah&lt;br /&gt;
* Yihan Shao&lt;br /&gt;
* Alistair Sterling&lt;br /&gt;
* Bill Swope&lt;br /&gt;
* Andrew Thiel&lt;br /&gt;
* Hedieh Torabifard&lt;br /&gt;
* Sameer Varma&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Alice Walker&lt;br /&gt;
* Yanxing Wang&lt;br /&gt;
* Zhi Wang&lt;br /&gt;
* Beibei Wei&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Valerie Welborn&lt;br /&gt;
* Chuanjie Wu&lt;br /&gt;
* Wei Yang&lt;br /&gt;
* Bohak Yoon&lt;br /&gt;
* Cheyenne Ziegler&lt;br /&gt;
* Ketsia Zinga&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2173</id>
		<title>Tinkermeeting:tinkermeeting2025</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2173"/>
		<updated>2026-04-10T18:55:30Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://physics.utdallas.edu/tinker-25-attendees/&lt;br /&gt;
[[File:TinkerMeeting 2025.jpg|left|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Participants ===&lt;br /&gt;
&lt;br /&gt;
* Rakhat Alakenova&lt;br /&gt;
* Jessica Arcudia&lt;br /&gt;
* Cole Allen&lt;br /&gt;
* Robert Best&lt;br /&gt;
* Margaret Blazhynska&lt;br /&gt;
* Anthony Bogetti&lt;br /&gt;
* Bernie Brooks&lt;br /&gt;
* Charlie Brooks&lt;br /&gt;
* Dave Case&lt;br /&gt;
* Côme Cattin&lt;br /&gt;
* Shubham Chatterjee&lt;br /&gt;
* Andrés Cisneros&lt;br /&gt;
* Yuvraj Dangat&lt;br /&gt;
* Tom Darden&lt;br /&gt;
* Julián Delgado&lt;br /&gt;
* Omar Demerdash&lt;br /&gt;
* Jose Alberto de la Paz&lt;br /&gt;
* Upeksha Dissanayake&lt;br /&gt;
* Alberto dos Santos&lt;br /&gt;
* Peter Eastman&lt;br /&gt;
* Shehen Fernando&lt;br /&gt;
* Mozhdeh Ghafari&lt;br /&gt;
* Jake Gissinger&lt;br /&gt;
* Mike Gilson&lt;br /&gt;
* Rose Gogal&lt;br /&gt;
* Hati Gokcan&lt;br /&gt;
* James Gonzales&lt;br /&gt;
* Nohad Gresh&lt;br /&gt;
* JC Gumbart&lt;br /&gt;
* Dave Hardy&lt;br /&gt;
* Zhecheng He&lt;br /&gt;
* Sahar Heidari&lt;br /&gt;
* Fariha Hossain&lt;br /&gt;
* Xuhui Huang&lt;br /&gt;
* Francis Jing&lt;br /&gt;
* Luc-Henri Jolly&lt;br /&gt;
* Hyunseo Kim&lt;br /&gt;
* Louis Lagardère&lt;br /&gt;
* Wan-Lu Li&lt;br /&gt;
* Chengwen Liu&lt;br /&gt;
* Ao Ma&lt;br /&gt;
* Priyanka Maharana&lt;br /&gt;
* Charles Mariasoosai&lt;br /&gt;
* Mauricio Martil&lt;br /&gt;
* Blake Mertz&lt;br /&gt;
* Ignacio Migliaro&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Shubham Mittal&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Mayar Mohamed&lt;br /&gt;
* Fernando Montalvillo&lt;br /&gt;
* Matthieu Montes&lt;br /&gt;
* Yinglong Miao&lt;br /&gt;
* Kwangho Nam&lt;br /&gt;
* Marjan Nikpey&lt;br /&gt;
* Jorge Nochebuena&lt;br /&gt;
* Ignacio Pickering&lt;br /&gt;
* Jean-Philip Piquemal&lt;br /&gt;
* Thomas Plé&lt;br /&gt;
* Sarthi Polara&lt;br /&gt;
* Jay Ponder&lt;br /&gt;
* Josh Rackers&lt;br /&gt;
* Daniel Relix&lt;br /&gt;
* Pengyu Ren&lt;br /&gt;
* Demian Riccardi&lt;br /&gt;
* Julia Rice&lt;br /&gt;
* Benoit Roux&lt;br /&gt;
* Arkanil Roy&lt;br /&gt;
* Prasad Samarjeet&lt;br /&gt;
* Michael Schnieders&lt;br /&gt;
* Abeda Shamma&lt;br /&gt;
* Tejas Shah&lt;br /&gt;
* Yihan Shao&lt;br /&gt;
* Alistair Sterling&lt;br /&gt;
* Bill Swope&lt;br /&gt;
* Andrew Thiel&lt;br /&gt;
* Hedieh Torabifard&lt;br /&gt;
* Sameer Varma&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Alice Walker&lt;br /&gt;
* Yanxing Wang&lt;br /&gt;
* Zhi Wang&lt;br /&gt;
* Beibei Wei&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Valerie Welborn&lt;br /&gt;
* Chuanjie Wu&lt;br /&gt;
* Wei Yang&lt;br /&gt;
* Bohak Yoon&lt;br /&gt;
* Cheyenne Ziegler&lt;br /&gt;
* Ketsia Zinga&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2172</id>
		<title>Tinkermeeting:tinkermeeting2025</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2172"/>
		<updated>2026-04-10T18:55:21Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://physics.utdallas.edu/tinker-25-attendees/&lt;br /&gt;
[[File:TinkerMeeting 2025.jpg|left|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Participants ===&lt;br /&gt;
&lt;br /&gt;
* Rakhat Alakenova&lt;br /&gt;
* Jessica Arcudia&lt;br /&gt;
* Cole Allen&lt;br /&gt;
* Robert Best&lt;br /&gt;
* Margaret Blazhynska&lt;br /&gt;
* Anthony Bogetti&lt;br /&gt;
* Bernie Brooks&lt;br /&gt;
* Charlie Brooks&lt;br /&gt;
* Dave Case&lt;br /&gt;
* Côme Cattin&lt;br /&gt;
* Shubham Chatterjee&lt;br /&gt;
* Andrés Cisneros&lt;br /&gt;
* Yuvraj Dangat&lt;br /&gt;
* Tom Darden&lt;br /&gt;
* Julián Delgado&lt;br /&gt;
* Omar Demerdash&lt;br /&gt;
* Jose Alberto de la Paz&lt;br /&gt;
* Upeksha Dissanayake&lt;br /&gt;
* Alberto dos Santos&lt;br /&gt;
* Peter Eastman&lt;br /&gt;
* Shehen Fernando&lt;br /&gt;
* Mozhdeh Ghafari&lt;br /&gt;
* Jake Gissinger&lt;br /&gt;
* Mike Gilson&lt;br /&gt;
* Rose Gogal&lt;br /&gt;
* Hati Gokcan&lt;br /&gt;
* James Gonzales&lt;br /&gt;
* Nohad Gresh&lt;br /&gt;
* JC Gumbart&lt;br /&gt;
* Dave Hardy&lt;br /&gt;
* Zhecheng He&lt;br /&gt;
* Sahar Heidari&lt;br /&gt;
* Fariha Hossain&lt;br /&gt;
* Xuhui Huang&lt;br /&gt;
* Francis Jing&lt;br /&gt;
* Luc-Henri Jolly&lt;br /&gt;
* Hyunseo Kim&lt;br /&gt;
* Louis Lagardère&lt;br /&gt;
* Wan-Lu Li&lt;br /&gt;
* Chengwen Liu&lt;br /&gt;
* Ao Ma&lt;br /&gt;
* Priyanka Maharana&lt;br /&gt;
* Charles Mariasoosai&lt;br /&gt;
* Mauricio Martil&lt;br /&gt;
* Blake Mertz&lt;br /&gt;
* Ignacio Migliaro&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Shubham Mittal&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Mayar Mohamed&lt;br /&gt;
* Fernando Montalvillo&lt;br /&gt;
* Matthieu Montes&lt;br /&gt;
* Yinglong Miao&lt;br /&gt;
* Kwangho Nam&lt;br /&gt;
* Marjan Nikpey&lt;br /&gt;
* Jorge Nochebuena&lt;br /&gt;
* Ignacio Pickering&lt;br /&gt;
* Jean-Philip Piquemal&lt;br /&gt;
* Thomas Plé&lt;br /&gt;
* Sarthi Polara&lt;br /&gt;
* Jay Ponder&lt;br /&gt;
* Josh Rackers&lt;br /&gt;
* Daniel Relix&lt;br /&gt;
* Pengyu Ren&lt;br /&gt;
* Demian Riccardi&lt;br /&gt;
* Julia Rice&lt;br /&gt;
* Benoit Roux&lt;br /&gt;
* Arkanil Roy&lt;br /&gt;
* Prasad Samarjeet&lt;br /&gt;
* Michael Schnieders&lt;br /&gt;
* Abeda Shamma&lt;br /&gt;
* Tejas Shah&lt;br /&gt;
* Yihan Shao&lt;br /&gt;
* Alistair Sterling&lt;br /&gt;
* Bill Swope&lt;br /&gt;
* Andrew Thiel&lt;br /&gt;
* Hedieh Torabifard&lt;br /&gt;
* Sameer Varma&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Alice Walker&lt;br /&gt;
* Yanxing Wang&lt;br /&gt;
* Zhi Wang&lt;br /&gt;
* Beibei Wei&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Valerie Welborn&lt;br /&gt;
* Chuanjie Wu&lt;br /&gt;
* Wei Yang&lt;br /&gt;
* Bohak Yoon&lt;br /&gt;
* Cheyenne Ziegler&lt;br /&gt;
* Ketsia Zinga&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=File:TinkerMeeting_2025.jpg&amp;diff=2171</id>
		<title>File:TinkerMeeting 2025.jpg</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=File:TinkerMeeting_2025.jpg&amp;diff=2171"/>
		<updated>2026-04-10T18:55:00Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tinker meeting 2025&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2170</id>
		<title>Tinkermeeting:tinkermeeting2025</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2025&amp;diff=2170"/>
		<updated>2026-04-10T18:52:56Z</updated>

		<summary type="html">&lt;p&gt;Pren: Tinker 2025&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://physics.utdallas.edu/tinker-25-attendees/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Participants ===&lt;br /&gt;
&lt;br /&gt;
* Rakhat Alakenova&lt;br /&gt;
* Jessica Arcudia&lt;br /&gt;
* Cole Allen&lt;br /&gt;
* Robert Best&lt;br /&gt;
* Margaret Blazhynska&lt;br /&gt;
* Anthony Bogetti&lt;br /&gt;
* Bernie Brooks&lt;br /&gt;
* Charlie Brooks&lt;br /&gt;
* Dave Case&lt;br /&gt;
* Côme Cattin&lt;br /&gt;
* Shubham Chatterjee&lt;br /&gt;
* Andrés Cisneros&lt;br /&gt;
* Yuvraj Dangat&lt;br /&gt;
* Tom Darden&lt;br /&gt;
* Julián Delgado&lt;br /&gt;
* Omar Demerdash&lt;br /&gt;
* Jose Alberto de la Paz&lt;br /&gt;
* Upeksha Dissanayake&lt;br /&gt;
* Alberto dos Santos&lt;br /&gt;
* Peter Eastman&lt;br /&gt;
* Shehen Fernando&lt;br /&gt;
* Mozhdeh Ghafari&lt;br /&gt;
* Jake Gissinger&lt;br /&gt;
* Mike Gilson&lt;br /&gt;
* Rose Gogal&lt;br /&gt;
* Hati Gokcan&lt;br /&gt;
* James Gonzales&lt;br /&gt;
* Nohad Gresh&lt;br /&gt;
* JC Gumbart&lt;br /&gt;
* Dave Hardy&lt;br /&gt;
* Zhecheng He&lt;br /&gt;
* Sahar Heidari&lt;br /&gt;
* Fariha Hossain&lt;br /&gt;
* Xuhui Huang&lt;br /&gt;
* Francis Jing&lt;br /&gt;
* Luc-Henri Jolly&lt;br /&gt;
* Hyunseo Kim&lt;br /&gt;
* Louis Lagardère&lt;br /&gt;
* Wan-Lu Li&lt;br /&gt;
* Chengwen Liu&lt;br /&gt;
* Ao Ma&lt;br /&gt;
* Priyanka Maharana&lt;br /&gt;
* Charles Mariasoosai&lt;br /&gt;
* Mauricio Martil&lt;br /&gt;
* Blake Mertz&lt;br /&gt;
* Ignacio Migliaro&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Shubham Mittal&lt;br /&gt;
* Jake Miller&lt;br /&gt;
* Mayar Mohamed&lt;br /&gt;
* Fernando Montalvillo&lt;br /&gt;
* Matthieu Montes&lt;br /&gt;
* Yinglong Miao&lt;br /&gt;
* Kwangho Nam&lt;br /&gt;
* Marjan Nikpey&lt;br /&gt;
* Jorge Nochebuena&lt;br /&gt;
* Ignacio Pickering&lt;br /&gt;
* Jean-Philip Piquemal&lt;br /&gt;
* Thomas Plé&lt;br /&gt;
* Sarthi Polara&lt;br /&gt;
* Jay Ponder&lt;br /&gt;
* Josh Rackers&lt;br /&gt;
* Daniel Relix&lt;br /&gt;
* Pengyu Ren&lt;br /&gt;
* Demian Riccardi&lt;br /&gt;
* Julia Rice&lt;br /&gt;
* Benoit Roux&lt;br /&gt;
* Arkanil Roy&lt;br /&gt;
* Prasad Samarjeet&lt;br /&gt;
* Michael Schnieders&lt;br /&gt;
* Abeda Shamma&lt;br /&gt;
* Tejas Shah&lt;br /&gt;
* Yihan Shao&lt;br /&gt;
* Alistair Sterling&lt;br /&gt;
* Bill Swope&lt;br /&gt;
* Andrew Thiel&lt;br /&gt;
* Hedieh Torabifard&lt;br /&gt;
* Sameer Varma&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Alice Walker&lt;br /&gt;
* Yanxing Wang&lt;br /&gt;
* Zhi Wang&lt;br /&gt;
* Beibei Wei&lt;br /&gt;
* Guowei Wei&lt;br /&gt;
* Valerie Welborn&lt;br /&gt;
* Chuanjie Wu&lt;br /&gt;
* Wei Yang&lt;br /&gt;
* Bohak Yoon&lt;br /&gt;
* Cheyenne Ziegler&lt;br /&gt;
* Ketsia Zinga&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=TinkerMeeting%22tinkerconf&amp;diff=2169</id>
		<title>TinkerMeeting&quot;tinkerconf</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=TinkerMeeting%22tinkerconf&amp;diff=2169"/>
		<updated>2026-04-10T18:51:44Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;TINKER Meetings&#039;&#039;&#039; &lt;br /&gt;
*[[TinkerMeeting:tinkermeeting-2017| 2017, Washington Univ. St. Louis]]&lt;br /&gt;
*[[TinkerMeeting:tinkermeeting-2018| 2018, UT Austin ]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2019| 2019, Paris, France, joint CHARMM/Tinker meeting ]]&lt;br /&gt;
*[[Tinkermeeting:Harrinton2020| 2020&amp;amp;nbsp;Harrington Symposium, UT Austin; Cancelled due to COVID ]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2022| 2022, Maryland]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2023| 2023, St. Louis]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2024| 2024, Pisa, Italy]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2025| 2025, Dallas, TX (UT Dallas) ]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=TinkerMeeting%22tinkerconf&amp;diff=2168</id>
		<title>TinkerMeeting&quot;tinkerconf</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=TinkerMeeting%22tinkerconf&amp;diff=2168"/>
		<updated>2026-04-10T18:49:07Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;TINKER Meetings&#039;&#039;&#039; &lt;br /&gt;
*[[TinkerMeeting:tinkermeeting-2017| 2017, Washington Univ. St. Louis]]&lt;br /&gt;
*[[TinkerMeeting:tinkermeeting-2018| 2018, UT Austin ]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2019| 2019, Paris, France, joint CHARMM/Tinker meeting ]]&lt;br /&gt;
*[[Tinkermeeting:Harrinton2020| 2020&amp;amp;nbsp;Harrington Symposium, UT Austin; Cancelled due to COVID ]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2022| 2022, Maryland]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2023| 2023, St. Louis]]&lt;br /&gt;
*[[Tinkermeeting:tinkermeeting2024| 2024, Pisa, Italy]]&lt;br /&gt;
*2025, Dallas, TX (UT Dallas)&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2167</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2167"/>
		<updated>2026-04-08T20:29:27Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* How to generate input files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
Tinker manual: https://dasher.wustl.edu/tinker/downloads/tinker-guide.pdf&lt;br /&gt;
&lt;br /&gt;
Tinker GPU manual: https://tinker9-manual.readthedocs.io/en/latest/ &lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker source from https://github.com/TinkerTools/tinker&amp;lt;nowiki/&amp;gt;and executables from https://github.com/TinkerTools/tinker-ffe/releases/tag/v25.5 or  [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. Linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the opportunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebabio18.prm &lt;br /&gt;
                                      &#039;&#039;# use the latest prm from GitHub&#039;&#039;&lt;br /&gt;
 # verbose                            &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 integrator            respa          &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 a-axis                62.23          &#039;&#039;# add b and c-axis if not cubic&#039;&#039;&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 neighbor-list                &#039;&#039;# this below requires your box is twice the cutoff plus 2 or 3 Ang.&#039;&#039;&lt;br /&gt;
                              &#039;&#039;#&#039;&#039; &#039;&#039;If your box is too small for vdw but OK for Ewald, you can&#039;&#039; &#039;&#039;use &amp;quot;mpole-list&amp;quot;&#039;&#039;&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0    &#039;&#039;# small cutoff because dipole/quadrupole die off &amp;gt; charge.&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 polar-eps             0.01    &#039;&#039;# the induced dipole convergence threshold, 0.001 is better but slower.&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 &lt;br /&gt;
 #polarization         OPT3    &#039;&#039;#For improving polarization. OPT4 is more accurate but OPT3 is faster&#039;&#039;&lt;br /&gt;
 #openmp-threads       16      &#039;&#039;# CPU only. how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN              #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be &#039;&#039;                                                                      &lt;br /&gt;
                              #&#039;&#039;Kinetics will  be affected            &#039;&#039;&lt;br /&gt;
                                                &lt;br /&gt;
 # pme-grid  64 64 64       &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files =&lt;br /&gt;
&lt;br /&gt;
== CHARMM-GUI ==&lt;br /&gt;
charmm-gui can now output simulation files in Tinker format, but only fixed-charge force fields for now.&lt;br /&gt;
&lt;br /&gt;
== Latest tool for system set up for Tinker and AMOEBA ==&lt;br /&gt;
https://github.com/prenlab/Tinker-GUI&lt;br /&gt;
&lt;br /&gt;
Tools developed by Dr. Chengwen Liu for complex systems such as protein-membrane system: https://github.com/leucinw/TIPTOP&lt;br /&gt;
&lt;br /&gt;
Once built, before running production, see below [[#Check your xyz/key files and common errors]]&lt;br /&gt;
&lt;br /&gt;
== Programs and Scripts for converting formats ==&lt;br /&gt;
Click to see: [[tinkersctipts]]&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== Lipid Bilayer System ==&lt;br /&gt;
If you have complicated system; protein embedded in a lipid bilayer and solvated in water box and a ligand prepared by CHARMM-GUI or any other package. The best way to convert such system is to divide it into three parts:&lt;br /&gt;
&lt;br /&gt;
i- Protein + water + ions: can be converted by pdb2xyz in Tinker and will result in the best consistency&lt;br /&gt;
&lt;br /&gt;
ii- Lipid bilayer: This must be converted manually using a script, depending on the lipid type check the Github TIPTOP database leucinw/TIPTOP. Convert each lipid alone, depending on the connectivity from the reference (don’t use the connectivity from Openbabel as this will result in wrong connectivity and the system will blow up). After converting each lipid molecule alone, append all of them together&lt;br /&gt;
&lt;br /&gt;
iii- If your system has a ligand or a non-standard ion, Poltype should be used to generate the parameter file, then convert your extracted ligand or non-standard ion using pdb2xyz and double check that the atom type assigned is consistent with what you had in the parameter file&lt;br /&gt;
&lt;br /&gt;
iv- Use xyzedit option 23 to combine the three parts together (Protein + water +ion with Lipid Bilayer system + ligand or non-standard ion)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1:&#039;&#039;&#039; You have to make sure that the assigned atom types are different and unique for each part of your system, for example the assigned atom type for the ligand has to be different from that of the lipid and from those in the amoebabio18.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2:&#039;&#039;&#039; To run pdb2xyz or xyzedit, you need a parameter file and/or key file containing the parameters. you can’t upload several parameter files in the key file, for example you can’t have   parameters amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
parameters ligand.prm&lt;br /&gt;
&lt;br /&gt;
This will result in loading only the second one only. The solution is to combine all of them into a single parameter file or into the key file&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check. The CPU version &amp;quot;analyze&amp;quot; has many more options.&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key eL&amp;quot; &lt;br /&gt;
  will print out large interactions, for example large ele or vdw interactions of two atoms that are too close&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multipoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOESN&#039;T mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.1&amp;quot; or 0.01 during system setup and 0.01 (0.001) for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT for &#039;&#039;&#039;anisotropic systems&#039;&#039;&#039; such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;barostat langevin&#039;&#039;&#039; # for GPU&lt;br /&gt;
 &#039;&#039;&#039;semiiso-pressure&#039;&#039;&#039; (if using tinker-GPU from 2025)&lt;br /&gt;
 &#039;&#039;&#039;pressure  SEMIISO (or &amp;quot;PRESSURE SEMI&amp;quot; if using tinker-GPU from 2026&#039;&#039;&#039; #PRESSURE [ISOTROPIC / SEMI-ISOTROPIC / ANISOTROPIC ] &lt;br /&gt;
 #barostat Langevin&lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equilibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g. for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to speed up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error.&lt;br /&gt;
**Use &amp;quot;polar-eps 0.01&amp;quot; and &amp;quot;polar-predict&amp;quot; for equilibration for speed. For production use &amp;quot;polar-eps 0.001&amp;quot; or &amp;quot;0.0001&amp;quot;.&lt;br /&gt;
**use &amp;quot;neighbor-list&amp;quot;&lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be. Water/ions are relaxed after this step.&lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run 1-2 ns NPT. Add/use &#039;&#039;&#039;&amp;quot;barostat MonteCarlo&amp;quot; in key.&#039;&#039;&#039;&lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
**use 2 fs with RESPA&lt;br /&gt;
**polar-eps 0.001 &lt;br /&gt;
**polar-predict&lt;br /&gt;
**neighbor-list&lt;br /&gt;
**&#039;&#039;&#039;barostat MonteCarlo&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Fundamental theory of AMOEBA multipoles:&#039;&#039;&#039; ===&lt;br /&gt;
[[Tutorial:amm#Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)]]&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
&lt;br /&gt;
=== Suggested Tinker Key File for AMOEBA+ Condensed Phase Simulations ===&lt;br /&gt;
 EWALD&lt;br /&gt;
 EWALD-CUTOFF      9.0 # for real space Ewald and charge penetration&lt;br /&gt;
 &lt;br /&gt;
 NEIGHBOR-LIST&lt;br /&gt;
 &lt;br /&gt;
 VDW-CUTOFF        12.0 # for vdw term&lt;br /&gt;
 CHGTRN-CUTOFF     12.0 # for charge transfer term&lt;br /&gt;
 VDW-CORRECTION&lt;br /&gt;
 &lt;br /&gt;
 INTEGRATOR  RESPA&lt;br /&gt;
 THERMOSTAT  BUSSI&lt;br /&gt;
 BAROSTAT    MONTECARLO&lt;br /&gt;
 &lt;br /&gt;
 POLAR-PREDICT&lt;br /&gt;
 POLAR-EPS 0.00001&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkersctipts&amp;diff=2166</id>
		<title>Tinkersctipts</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkersctipts&amp;diff=2166"/>
		<updated>2026-04-08T20:29:19Z</updated>

		<summary type="html">&lt;p&gt;Pren: Created page with &amp;quot;# &amp;lt;code&amp;gt;/home/pren/bin/density.sh some.xyz&amp;lt;/code&amp;gt;  is a shell script to compute density for a Tinker xyz file. The second line of the file needs to be the box dimension # Convert from tinker xyz to PDB or cif (if more than 99,999 atoms). Let me if you need to add more functionality or have problems &amp;lt;code&amp;gt;python ~/bin/tinker2pdb.py --water-type 349 --format cif popcbi221.xyz&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;python ~/bin/tinker2pdb.py -h&amp;lt;/code&amp;gt; # In tinker &amp;quot;arcedit&amp;quot; is the command for conver...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# &amp;lt;code&amp;gt;/home/pren/bin/density.sh some.xyz&amp;lt;/code&amp;gt;  is a shell script to compute density for a Tinker xyz file. The second line of the file needs to be the box dimension&lt;br /&gt;
# Convert from tinker xyz to PDB or cif (if more than 99,999 atoms). Let me if you need to add more functionality or have problems &amp;lt;code&amp;gt;python ~/bin/tinker2pdb.py --water-type 349 --format cif popcbi221.xyz&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;python ~/bin/tinker2pdb.py -h&amp;lt;/code&amp;gt;&lt;br /&gt;
# In tinker &amp;quot;arcedit&amp;quot; is the command for converting between dcd and archive/xyz, extract frames, etc  See &amp;lt;code&amp;gt;~pren/tinker8/2604/bin&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2165</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2165"/>
		<updated>2026-04-08T13:59:34Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */ semi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
Tinker manual: https://dasher.wustl.edu/tinker/downloads/tinker-guide.pdf&lt;br /&gt;
&lt;br /&gt;
Tinker GPU manual: https://tinker9-manual.readthedocs.io/en/latest/ &lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker source from https://github.com/TinkerTools/tinker&amp;lt;nowiki/&amp;gt;and executables from https://github.com/TinkerTools/tinker-ffe/releases/tag/v25.5 or  [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. Linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the opportunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebabio18.prm &lt;br /&gt;
                                      &#039;&#039;# use the latest prm from GitHub&#039;&#039;&lt;br /&gt;
 # verbose                            &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 integrator            respa          &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 a-axis                62.23          &#039;&#039;# add b and c-axis if not cubic&#039;&#039;&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 neighbor-list                &#039;&#039;# this below requires your box is twice the cutoff plus 2 or 3 Ang.&#039;&#039;&lt;br /&gt;
                              &#039;&#039;#&#039;&#039; &#039;&#039;If your box is too small for vdw but OK for Ewald, you can&#039;&#039; &#039;&#039;use &amp;quot;mpole-list&amp;quot;&#039;&#039;&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0    &#039;&#039;# small cutoff because dipole/quadrupole die off &amp;gt; charge.&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 polar-eps             0.01    &#039;&#039;# the induced dipole convergence threshold, 0.001 is better but slower.&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 &lt;br /&gt;
 #polarization         OPT3    &#039;&#039;#For improving polarization. OPT4 is more accurate but OPT3 is faster&#039;&#039;&lt;br /&gt;
 #openmp-threads       16      &#039;&#039;# CPU only. how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN              #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be &#039;&#039;                                                                      &lt;br /&gt;
                              #&#039;&#039;Kinetics will  be affected            &#039;&#039;&lt;br /&gt;
                                                &lt;br /&gt;
 # pme-grid  64 64 64       &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files =&lt;br /&gt;
&lt;br /&gt;
== CHARMM-GUI ==&lt;br /&gt;
charmm-gui can now output simulation files in Tinker format, but only fixed-charge force fields for now.&lt;br /&gt;
&lt;br /&gt;
== Latest tool for system set up for Tinker and AMOEBA ==&lt;br /&gt;
https://github.com/prenlab/Tinker-GUI&lt;br /&gt;
&lt;br /&gt;
Tools developed by Dr. Chengwen Liu for complex systems such as protein-membrane system: https://github.com/leucinw/TIPTOP&lt;br /&gt;
&lt;br /&gt;
Once built, before running production, see below [[#Check your xyz/key files and common errors]]&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== Lipid Bilayer System ==&lt;br /&gt;
If you have complicated system; protein embedded in a lipid bilayer and solvated in water box and a ligand prepared by CHARMM-GUI or any other package. The best way to convert such system is to divide it into three parts:&lt;br /&gt;
&lt;br /&gt;
i- Protein + water + ions: can be converted by pdb2xyz in Tinker and will result in the best consistency&lt;br /&gt;
&lt;br /&gt;
ii- Lipid bilayer: This must be converted manually using a script, depending on the lipid type check the Github TIPTOP database leucinw/TIPTOP. Convert each lipid alone, depending on the connectivity from the reference (don’t use the connectivity from Openbabel as this will result in wrong connectivity and the system will blow up). After converting each lipid molecule alone, append all of them together&lt;br /&gt;
&lt;br /&gt;
iii- If your system has a ligand or a non-standard ion, Poltype should be used to generate the parameter file, then convert your extracted ligand or non-standard ion using pdb2xyz and double check that the atom type assigned is consistent with what you had in the parameter file&lt;br /&gt;
&lt;br /&gt;
iv- Use xyzedit option 23 to combine the three parts together (Protein + water +ion with Lipid Bilayer system + ligand or non-standard ion)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1:&#039;&#039;&#039; You have to make sure that the assigned atom types are different and unique for each part of your system, for example the assigned atom type for the ligand has to be different from that of the lipid and from those in the amoebabio18.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2:&#039;&#039;&#039; To run pdb2xyz or xyzedit, you need a parameter file and/or key file containing the parameters. you can’t upload several parameter files in the key file, for example you can’t have   parameters amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
parameters ligand.prm&lt;br /&gt;
&lt;br /&gt;
This will result in loading only the second one only. The solution is to combine all of them into a single parameter file or into the key file&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check. The CPU version &amp;quot;analyze&amp;quot; has many more options.&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key eL&amp;quot; &lt;br /&gt;
  will print out large interactions, for example large ele or vdw interactions of two atoms that are too close&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multipoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOESN&#039;T mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.1&amp;quot; or 0.01 during system setup and 0.01 (0.001) for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT for &#039;&#039;&#039;anisotropic systems&#039;&#039;&#039; such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;barostat langevin&#039;&#039;&#039; # for GPU&lt;br /&gt;
 &#039;&#039;&#039;semiiso-pressure&#039;&#039;&#039; (if using tinker-GPU from 2025)&lt;br /&gt;
 &#039;&#039;&#039;pressure  SEMIISO (or &amp;quot;PRESSURE SEMI&amp;quot; if using tinker-GPU from 2026&#039;&#039;&#039; #PRESSURE [ISOTROPIC / SEMI-ISOTROPIC / ANISOTROPIC ] &lt;br /&gt;
 #barostat Langevin&lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equilibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g. for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to speed up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error.&lt;br /&gt;
**Use &amp;quot;polar-eps 0.01&amp;quot; and &amp;quot;polar-predict&amp;quot; for equilibration for speed. For production use &amp;quot;polar-eps 0.001&amp;quot; or &amp;quot;0.0001&amp;quot;.&lt;br /&gt;
**use &amp;quot;neighbor-list&amp;quot;&lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be. Water/ions are relaxed after this step.&lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run 1-2 ns NPT. Add/use &#039;&#039;&#039;&amp;quot;barostat MonteCarlo&amp;quot; in key.&#039;&#039;&#039;&lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
**use 2 fs with RESPA&lt;br /&gt;
**polar-eps 0.001 &lt;br /&gt;
**polar-predict&lt;br /&gt;
**neighbor-list&lt;br /&gt;
**&#039;&#039;&#039;barostat MonteCarlo&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Fundamental theory of AMOEBA multipoles:&#039;&#039;&#039; ===&lt;br /&gt;
[[Tutorial:amm#Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)]]&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
&lt;br /&gt;
=== Suggested Tinker Key File for AMOEBA+ Condensed Phase Simulations ===&lt;br /&gt;
 EWALD&lt;br /&gt;
 EWALD-CUTOFF      9.0 # for real space Ewald and charge penetration&lt;br /&gt;
 &lt;br /&gt;
 NEIGHBOR-LIST&lt;br /&gt;
 &lt;br /&gt;
 VDW-CUTOFF        12.0 # for vdw term&lt;br /&gt;
 CHGTRN-CUTOFF     12.0 # for charge transfer term&lt;br /&gt;
 VDW-CORRECTION&lt;br /&gt;
 &lt;br /&gt;
 INTEGRATOR  RESPA&lt;br /&gt;
 THERMOSTAT  BUSSI&lt;br /&gt;
 BAROSTAT    MONTECARLO&lt;br /&gt;
 &lt;br /&gt;
 POLAR-PREDICT&lt;br /&gt;
 POLAR-EPS 0.00001&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2164</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2164"/>
		<updated>2026-04-06T15:30:51Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Available thermostat and barostat in TINKER (2021) */ pressure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
Tinker manual: https://dasher.wustl.edu/tinker/downloads/tinker-guide.pdf&lt;br /&gt;
&lt;br /&gt;
Tinker GPU manual: https://tinker9-manual.readthedocs.io/en/latest/ &lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker source from https://github.com/TinkerTools/tinker&amp;lt;nowiki/&amp;gt;and executables from https://github.com/TinkerTools/tinker-ffe/releases/tag/v25.5 or  [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. Linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the opportunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebabio18.prm &lt;br /&gt;
                                      &#039;&#039;# use the latest prm from GitHub&#039;&#039;&lt;br /&gt;
 # verbose                            &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 integrator            respa          &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 a-axis                62.23          &#039;&#039;# add b and c-axis if not cubic&#039;&#039;&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 neighbor-list                &#039;&#039;# this below requires your box is twice the cutoff plus 2 or 3 Ang.&#039;&#039;&lt;br /&gt;
                              &#039;&#039;#&#039;&#039; &#039;&#039;If your box is too small for vdw but OK for Ewald, you can&#039;&#039; &#039;&#039;use &amp;quot;mpole-list&amp;quot;&#039;&#039;&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0    &#039;&#039;# small cutoff because dipole/quadrupole die off &amp;gt; charge.&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 polar-eps             0.01    &#039;&#039;# the induced dipole convergence threshold, 0.001 is better but slower.&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 &lt;br /&gt;
 #polarization         OPT3    &#039;&#039;#For improving polarization. OPT4 is more accurate but OPT3 is faster&#039;&#039;&lt;br /&gt;
 #openmp-threads       16      &#039;&#039;# CPU only. how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN              #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be &#039;&#039;                                                                      &lt;br /&gt;
                              #&#039;&#039;Kinetics will  be affected            &#039;&#039;&lt;br /&gt;
                                                &lt;br /&gt;
 # pme-grid  64 64 64       &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files =&lt;br /&gt;
&lt;br /&gt;
== CHARMM-GUI ==&lt;br /&gt;
charmm-gui can now output simulation files in Tinker format, but only fixed-charge force fields for now.&lt;br /&gt;
&lt;br /&gt;
== Latest tool for system set up for Tinker and AMOEBA ==&lt;br /&gt;
https://github.com/prenlab/Tinker-GUI&lt;br /&gt;
&lt;br /&gt;
Tools developed by Dr. Chengwen Liu for complex systems such as protein-membrane system: https://github.com/leucinw/TIPTOP&lt;br /&gt;
&lt;br /&gt;
Once built, before running production, see below [[#Check your xyz/key files and common errors]]&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== Lipid Bilayer System ==&lt;br /&gt;
If you have complicated system; protein embedded in a lipid bilayer and solvated in water box and a ligand prepared by CHARMM-GUI or any other package. The best way to convert such system is to divide it into three parts:&lt;br /&gt;
&lt;br /&gt;
i- Protein + water + ions: can be converted by pdb2xyz in Tinker and will result in the best consistency&lt;br /&gt;
&lt;br /&gt;
ii- Lipid bilayer: This must be converted manually using a script, depending on the lipid type check the Github TIPTOP database leucinw/TIPTOP. Convert each lipid alone, depending on the connectivity from the reference (don’t use the connectivity from Openbabel as this will result in wrong connectivity and the system will blow up). After converting each lipid molecule alone, append all of them together&lt;br /&gt;
&lt;br /&gt;
iii- If your system has a ligand or a non-standard ion, Poltype should be used to generate the parameter file, then convert your extracted ligand or non-standard ion using pdb2xyz and double check that the atom type assigned is consistent with what you had in the parameter file&lt;br /&gt;
&lt;br /&gt;
iv- Use xyzedit option 23 to combine the three parts together (Protein + water +ion with Lipid Bilayer system + ligand or non-standard ion)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1:&#039;&#039;&#039; You have to make sure that the assigned atom types are different and unique for each part of your system, for example the assigned atom type for the ligand has to be different from that of the lipid and from those in the amoebabio18.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2:&#039;&#039;&#039; To run pdb2xyz or xyzedit, you need a parameter file and/or key file containing the parameters. you can’t upload several parameter files in the key file, for example you can’t have   parameters amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
parameters ligand.prm&lt;br /&gt;
&lt;br /&gt;
This will result in loading only the second one only. The solution is to combine all of them into a single parameter file or into the key file&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check. The CPU version &amp;quot;analyze&amp;quot; has many more options.&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key eL&amp;quot; &lt;br /&gt;
  will print out large interactions, for example large ele or vdw interactions of two atoms that are too close&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multipoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOESN&#039;T mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.1&amp;quot; or 0.01 during system setup and 0.01 (0.001) for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT for &#039;&#039;&#039;anisotropic systems&#039;&#039;&#039; such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;integrator lpiston&#039;&#039;&#039; # for GPU&lt;br /&gt;
 &#039;&#039;&#039;pressure  SEMI-ISOTROPIC&#039;&#039;&#039; #PRESSURE [ISOTROPIC / SEMI-ISOTROPIC / ANISOTROPIC ] &lt;br /&gt;
 #barostat Langevin&lt;br /&gt;
 #Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equilibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g. for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to speed up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error.&lt;br /&gt;
**Use &amp;quot;polar-eps 0.01&amp;quot; and &amp;quot;polar-predict&amp;quot; for equilibration for speed. For production use &amp;quot;polar-eps 0.001&amp;quot; or &amp;quot;0.0001&amp;quot;.&lt;br /&gt;
**use &amp;quot;neighbor-list&amp;quot;&lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be. Water/ions are relaxed after this step.&lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run 1-2 ns NPT. Add/use &#039;&#039;&#039;&amp;quot;barostat MonteCarlo&amp;quot; in key.&#039;&#039;&#039;&lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
**use 2 fs with RESPA&lt;br /&gt;
**polar-eps 0.001 &lt;br /&gt;
**polar-predict&lt;br /&gt;
**neighbor-list&lt;br /&gt;
**&#039;&#039;&#039;barostat MonteCarlo&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Fundamental theory of AMOEBA multipoles:&#039;&#039;&#039; ===&lt;br /&gt;
[[Tutorial:amm#Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)]]&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
&lt;br /&gt;
=== Suggested Tinker Key File for AMOEBA+ Condensed Phase Simulations ===&lt;br /&gt;
 EWALD&lt;br /&gt;
 EWALD-CUTOFF      9.0 # for real space Ewald and charge penetration&lt;br /&gt;
 &lt;br /&gt;
 NEIGHBOR-LIST&lt;br /&gt;
 &lt;br /&gt;
 VDW-CUTOFF        12.0 # for vdw term&lt;br /&gt;
 CHGTRN-CUTOFF     12.0 # for charge transfer term&lt;br /&gt;
 VDW-CORRECTION&lt;br /&gt;
 &lt;br /&gt;
 INTEGRATOR  RESPA&lt;br /&gt;
 THERMOSTAT  BUSSI&lt;br /&gt;
 BAROSTAT    MONTECARLO&lt;br /&gt;
 &lt;br /&gt;
 POLAR-PREDICT&lt;br /&gt;
 POLAR-EPS 0.00001&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2163</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2163"/>
		<updated>2026-04-06T15:28:29Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Purposes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
Tinker manual: https://dasher.wustl.edu/tinker/downloads/tinker-guide.pdf&lt;br /&gt;
&lt;br /&gt;
Tinker GPU manual: https://tinker9-manual.readthedocs.io/en/latest/ &lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker source from https://github.com/TinkerTools/tinker&amp;lt;nowiki/&amp;gt;and executables from https://github.com/TinkerTools/tinker-ffe/releases/tag/v25.5 or  [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. Linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the opportunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebabio18.prm &lt;br /&gt;
                                      &#039;&#039;# use the latest prm from GitHub&#039;&#039;&lt;br /&gt;
 # verbose                            &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 integrator            respa          &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 a-axis                62.23          &#039;&#039;# add b and c-axis if not cubic&#039;&#039;&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 neighbor-list                &#039;&#039;# this below requires your box is twice the cutoff plus 2 or 3 Ang.&#039;&#039;&lt;br /&gt;
                              &#039;&#039;#&#039;&#039; &#039;&#039;If your box is too small for vdw but OK for Ewald, you can&#039;&#039; &#039;&#039;use &amp;quot;mpole-list&amp;quot;&#039;&#039;&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0    &#039;&#039;# small cutoff because dipole/quadrupole die off &amp;gt; charge.&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 polar-eps             0.01    &#039;&#039;# the induced dipole convergence threshold, 0.001 is better but slower.&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 &lt;br /&gt;
 #polarization         OPT3    &#039;&#039;#For improving polarization. OPT4 is more accurate but OPT3 is faster&#039;&#039;&lt;br /&gt;
 #openmp-threads       16      &#039;&#039;# CPU only. how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN              #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be &#039;&#039;                                                                      &lt;br /&gt;
                              #&#039;&#039;Kinetics will  be affected            &#039;&#039;&lt;br /&gt;
                                                &lt;br /&gt;
 # pme-grid  64 64 64       &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files =&lt;br /&gt;
&lt;br /&gt;
== CHARMM-GUI ==&lt;br /&gt;
charmm-gui can now output simulation files in Tinker format, but only fixed-charge force fields for now.&lt;br /&gt;
&lt;br /&gt;
== Latest tool for system set up for Tinker and AMOEBA ==&lt;br /&gt;
https://github.com/prenlab/Tinker-GUI&lt;br /&gt;
&lt;br /&gt;
Tools developed by Dr. Chengwen Liu for complex systems such as protein-membrane system: https://github.com/leucinw/TIPTOP&lt;br /&gt;
&lt;br /&gt;
Once built, before running production, see below [[#Check your xyz/key files and common errors]]&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== Lipid Bilayer System ==&lt;br /&gt;
If you have complicated system; protein embedded in a lipid bilayer and solvated in water box and a ligand prepared by CHARMM-GUI or any other package. The best way to convert such system is to divide it into three parts:&lt;br /&gt;
&lt;br /&gt;
i- Protein + water + ions: can be converted by pdb2xyz in Tinker and will result in the best consistency&lt;br /&gt;
&lt;br /&gt;
ii- Lipid bilayer: This must be converted manually using a script, depending on the lipid type check the Github TIPTOP database leucinw/TIPTOP. Convert each lipid alone, depending on the connectivity from the reference (don’t use the connectivity from Openbabel as this will result in wrong connectivity and the system will blow up). After converting each lipid molecule alone, append all of them together&lt;br /&gt;
&lt;br /&gt;
iii- If your system has a ligand or a non-standard ion, Poltype should be used to generate the parameter file, then convert your extracted ligand or non-standard ion using pdb2xyz and double check that the atom type assigned is consistent with what you had in the parameter file&lt;br /&gt;
&lt;br /&gt;
iv- Use xyzedit option 23 to combine the three parts together (Protein + water +ion with Lipid Bilayer system + ligand or non-standard ion)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 1:&#039;&#039;&#039; You have to make sure that the assigned atom types are different and unique for each part of your system, for example the assigned atom type for the ligand has to be different from that of the lipid and from those in the amoebabio18.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note 2:&#039;&#039;&#039; To run pdb2xyz or xyzedit, you need a parameter file and/or key file containing the parameters. you can’t upload several parameter files in the key file, for example you can’t have   parameters amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
parameters ligand.prm&lt;br /&gt;
&lt;br /&gt;
This will result in loading only the second one only. The solution is to combine all of them into a single parameter file or into the key file&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check. The CPU version &amp;quot;analyze&amp;quot; has many more options.&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key eL&amp;quot; &lt;br /&gt;
  will print out large interactions, for example large ele or vdw interactions of two atoms that are too close&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multipoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOESN&#039;T mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.1&amp;quot; or 0.01 during system setup and 0.01 (0.001) for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT for anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equilibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g. for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to speed up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error.&lt;br /&gt;
**Use &amp;quot;polar-eps 0.01&amp;quot; and &amp;quot;polar-predict&amp;quot; for equilibration for speed. For production use &amp;quot;polar-eps 0.001&amp;quot; or &amp;quot;0.0001&amp;quot;.&lt;br /&gt;
**use &amp;quot;neighbor-list&amp;quot;&lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be. Water/ions are relaxed after this step.&lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run 1-2 ns NPT. Add/use &#039;&#039;&#039;&amp;quot;barostat MonteCarlo&amp;quot; in key.&#039;&#039;&#039;&lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
**use 2 fs with RESPA&lt;br /&gt;
**polar-eps 0.001 &lt;br /&gt;
**polar-predict&lt;br /&gt;
**neighbor-list&lt;br /&gt;
**&#039;&#039;&#039;barostat MonteCarlo&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Fundamental theory of AMOEBA multipoles:&#039;&#039;&#039; ===&lt;br /&gt;
[[Tutorial:amm#Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)]]&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
&lt;br /&gt;
=== Suggested Tinker Key File for AMOEBA+ Condensed Phase Simulations ===&lt;br /&gt;
 EWALD&lt;br /&gt;
 EWALD-CUTOFF      9.0 # for real space Ewald and charge penetration&lt;br /&gt;
 &lt;br /&gt;
 NEIGHBOR-LIST&lt;br /&gt;
 &lt;br /&gt;
 VDW-CUTOFF        12.0 # for vdw term&lt;br /&gt;
 CHGTRN-CUTOFF     12.0 # for charge transfer term&lt;br /&gt;
 VDW-CORRECTION&lt;br /&gt;
 &lt;br /&gt;
 INTEGRATOR  RESPA&lt;br /&gt;
 THERMOSTAT  BUSSI&lt;br /&gt;
 BAROSTAT    MONTECARLO&lt;br /&gt;
 &lt;br /&gt;
 POLAR-PREDICT&lt;br /&gt;
 POLAR-EPS 0.00001&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:Poltype_2&amp;diff=2143</id>
		<title>Ammm:Poltype 2</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:Poltype_2&amp;diff=2143"/>
		<updated>2025-09-25T19:27:48Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* PDF file: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= PDF file: =&lt;br /&gt;
Depend on your browser, you may see PDF embedded below or a link to click to download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pdf page=&amp;quot;10&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;512&amp;quot; &amp;gt;File:Poltype2.pdf&amp;lt;/pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Individual slide=&lt;br /&gt;
[[File:Poltype2.pdf|500 px|page=1]]&lt;br /&gt;
[[File:Poltype2.pdf|500 px|page=2]]&lt;br /&gt;
[[File:Poltype2.pdf|500 px|page=3]]&lt;br /&gt;
[[File:Poltype2.pdf|500 px|page=4]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:amm&amp;diff=2142</id>
		<title>Tutorial:amm</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:amm&amp;diff=2142"/>
		<updated>2025-09-25T19:27:12Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Neural Network Potential */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Advanced Molecular Modeling Methods&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Mm_gff|Molecular Mechanics and General force fields]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Mm_mpole|Electrostatic:polarizable multipole]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Mm_ewald|Ewald and vdw long range correction]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Mm_aplus|New Generation AMOEBA+ FF]] ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Molecular Dynamics&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Md_ham|Lagrangian and Hamiltonian]] (Ren) ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Md_erg|Liouville Equation and Ergodicity]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Md_integrator|Integrator and constrain]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Md_tp|Temperature and Pressure control]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:stoch |Stochastic/Langevin/Brownian/DPD dynamics]] ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Deriving force field parameters for a new molecule/unit&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Ff_gau_grom_prdrug|Gaussian and Gromacs and prodrug server (Fonner)]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Ff_amber_ligand_parameter|Amber and Antechamber (Chunli)]]==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Lig_ion_params|Metal ion and ligand parameterizations (Oscar) 9/30]] ==&lt;br /&gt;
&lt;br /&gt;
= [[ammm:QM/MM|QM/MM (Christina)]] =&lt;br /&gt;
&lt;br /&gt;
= AMOEBA parameterization =&lt;br /&gt;
==[[Ammm:Poltype 2|Poltype 2 - Small molecule parameter derivation (2022)]]==&lt;br /&gt;
&lt;br /&gt;
= Free Energy =&lt;br /&gt;
== [[Ammm:chgcorr|charge correction]] ==&lt;br /&gt;
= &#039;&#039;Implicit Solvent approach&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Gb_gk|GB/GK (Jenny 10/12)]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:PB_(APBS)|PB (APBS)(Yue)]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Molecular_surfaces|Calculation of molecular surface (Maysam)]] &amp;lt;span style=&amp;quot;background-color: rgb(255, 102, 0);&amp;quot;&amp;gt;10/19&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Nonpolar_solvation|Nonpolar Solvation and hydrophobicity (Jenny 10/21)]] ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Sampling&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Free_energy_simulations|Free energy simulations]] (Johnny)  ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Umbrella_sampling_and_WHAM|Umbrella sampling and WHAM]] (Xudong Yang) 2022/08/03 ==&lt;br /&gt;
&lt;br /&gt;
== [[AMMM:Metadynamics|Metadynamics]] (Cole Allen) 2022/08/31 ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:REMD_jenny|REMD with Gromacs (Jenny)]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Adaptive_umbrella_sampling|Multicanonical and adaptive umbrella sampling]] (Bruce) &amp;lt;span style=&amp;quot;background-color: rgb(255, 102, 0);&amp;quot;&amp;gt;11/4&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
== [[Non_equilibrium_method_and_AFM_simulation_w_gromacs|Non equilibrium method and AFM simulation w Gromacs]] (Tim) &amp;lt;span style=&amp;quot;color: rgb(255, 102, 0);&amp;quot;&amp;gt;11/11(out of town on 11/9)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:milestoning|Milestoning]] (Xudong) ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Protein-ligand binding&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [https://biomolmd.org/mw/index.php/Ammm:ProteinLigandBFE Protein-Ligand Binding Free Energy (Elizabeth E. Wait) 08/2022] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Flexible_Docking_with_GOLD_and_GLIDE|Docking (Glide and gold) and flexibility (Maysam)]] &amp;lt;span style=&amp;quot;background-color: rgb(255, 102, 0);&amp;quot;&amp;gt;11/16&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:MM/PBSA_with_amber:_theory_and_application|MM/PBSA with amber: theory and application]](Chunli) &amp;lt;span style=&amp;quot;background-color: rgb(255, 102, 0);&amp;quot;&amp;gt;11/18&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
== FEP/BAR, TI (Oscar) cancelled ==&lt;br /&gt;
see &lt;br /&gt;
* [[ammm:Free_energy_simulations|Free energy simulations (Johnny)]]&lt;br /&gt;
* http://alchemistry.org/wiki/Main_Page&lt;br /&gt;
&lt;br /&gt;
 Free Energy Perturbation&lt;br /&gt;
 BAR&lt;br /&gt;
 Thermodynamic Integration&lt;br /&gt;
 Metadynamics&lt;br /&gt;
 Orthogonal Space Random Walk&lt;br /&gt;
&lt;br /&gt;
Read books:&lt;br /&gt;
&lt;br /&gt;
*Molecular Modeling by Andrew Leach&lt;br /&gt;
*Free energy calculations (Chipot et al )&lt;br /&gt;
*And papers by Ren lab.&lt;br /&gt;
&lt;br /&gt;
= Electrostatics =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Comparative_Analysis_of_RNA_And_Mfold|Comparative Analysis of RNA And Mfold]] (David) &amp;lt;span style=&amp;quot;background-color: rgb(255, 102, 0);&amp;quot;&amp;gt;11/25&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Coarse-grained modeling&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Coarse_grain_modeling|Gay-Berne and coarse-grain modeling (Johnny) 11/30]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ammm:Rigid_body_MD_(Steven_12/2) | Rigidbody mechanics]]  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Psudo atom RNA model (Bruce) canceled ==&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;Reaction Path and TST&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== Reaction path search (David) canceled ==&lt;br /&gt;
&lt;br /&gt;
== Nudged Elastic Band (NEB) in AMBER (Oscar) canceled ==&lt;br /&gt;
&lt;br /&gt;
[http://ambermd.org/tutorials/advanced/tutorial5/index.htm http://ambermd.org/tutorials/advanced/tutorial5/index.htm]&lt;br /&gt;
&lt;br /&gt;
[http://www.quantumwise.com/documents/manuals/ATK-2008.10/chap.relax.html#chap.relax.neb.intro http://www.quantumwise.com/documents/manuals/ATK-2008.10/chap.relax.html#chap.relax.neb.intro]&lt;br /&gt;
&lt;br /&gt;
= Continuum method for biomolecules (Steven) canceled or merged with above =&lt;br /&gt;
&lt;br /&gt;
*Tetrameric mouse acetylcholinesterase: continuum diffusion rate calculations by solving the steady-state Smoluchowski equation using finite element methods &lt;br /&gt;
&lt;br /&gt;
Mar 21, 2005 Zhang D, Suen J, Zhang Y, Song Y, Radic Z, Taylor P, Holst MJ, Bajaj C, Baker NA, McCammon JA. Tetrameric mouse acetylcholinesterase: continuum diffusion rate calculations by solving the steady-state Smoluchowski equation using finite element methods. Biophys J, 88, 1659-1666, 2005.&lt;br /&gt;
&lt;br /&gt;
*Continuum diffusion reaction rate calculations of wild type and mutant mouse acetylcholinesterase: adaptive finite element analysis &lt;br /&gt;
&lt;br /&gt;
Sep 1, 2004 Song Y, Zhang Y, Bajaj C, Baker NA. Continuum diffusion reaction rate calculations of wild type and mutant mouse acetylcholinesterase: adaptive finite element analysis. Biophys J, 87, 1558-1566, 2004.&lt;br /&gt;
&lt;br /&gt;
*Finite element solution of the steady-state Smoluchowksi equation for rate constant calculations &lt;br /&gt;
&lt;br /&gt;
Apr 1, 2004 Song Y, Zhang Y, Shen T, Bajaj CL, McCammon JA, Baker NA. Finite element solution of the steady-state Smoluchowksi equation for rate constant calculations. Biophys J, 86, 2017-2029, 2004.&lt;br /&gt;
&lt;br /&gt;
*Finite element simulations of acetylcholine diffusion in neuromuscular junctions &lt;br /&gt;
&lt;br /&gt;
Dec 12, 2002 Tai K, Bond SD, MacMillan HR, Baker NA, Holst MJ, McCammon JA. Finite element simulations of acetylcholine diffusion in neuromuscular junctions. Biophys J, 84, 2234-2241, 2003.&lt;br /&gt;
&lt;br /&gt;
= Online Resource =&lt;br /&gt;
&lt;br /&gt;
== Gromacs tutorial ==&lt;br /&gt;
&lt;br /&gt;
[http://www.dddc.ac.cn/embo04/#Practicals http://www.dddc.ac.cn/embo04/#Practicals]&lt;br /&gt;
&lt;br /&gt;
== AMBER tutorial ==&lt;br /&gt;
&lt;br /&gt;
[http://ambermd.org/tutorial/ http://ambermd.org/tutorial/]&lt;br /&gt;
&lt;br /&gt;
[http://ambermd.org/tutorials/ http://ambermd.org/tutorials/]&lt;br /&gt;
&lt;br /&gt;
= Neural Network Potential =&lt;br /&gt;
(need PDFembed updated)&lt;br /&gt;
&lt;br /&gt;
== [[ammm:NNP: Molecular Representations |Molecular Representations]] ==&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:NNP:_Molecular_Representations&amp;diff=2141</id>
		<title>Ammm:NNP: Molecular Representations</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:NNP:_Molecular_Representations&amp;diff=2141"/>
		<updated>2025-09-25T19:26:36Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* PDF file: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= PDF file: =&lt;br /&gt;
Depend on your browser, you may see PDF embedded below or a link to click to download&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pdf page=&amp;quot;1&amp;quot; width=&amp;quot;1000&amp;quot; height=&amp;quot;600&amp;quot; &amp;gt;File:ammm_DLFF_Sep14.pdf&amp;lt;/pdf&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=File:REM2023.pdf&amp;diff=2140</id>
		<title>File:REM2023.pdf</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=File:REM2023.pdf&amp;diff=2140"/>
		<updated>2025-09-25T18:53:39Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2139</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2139"/>
		<updated>2025-08-12T20:01:51Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* AMOEBA Force Field Papers: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Fundamental theory of AMOEBA multipoles:&#039;&#039;&#039; ===&lt;br /&gt;
[[Tutorial:amm#Molecular Mechanics and Force Fields (AMOEBA, AMOEBA+)]]&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
&lt;br /&gt;
=== Suggested Tinker Key File for AMOEBA+ Condensed Phase Simulations ===&lt;br /&gt;
 EWALD&lt;br /&gt;
 EWALD-CUTOFF      9.0 # for real space Ewald and charge penetration&lt;br /&gt;
 &lt;br /&gt;
 NEIGHBOR-LIST&lt;br /&gt;
 &lt;br /&gt;
 VDW-CUTOFF        12.0 # for vdw term&lt;br /&gt;
 CHGTRN-CUTOFF     12.0 # for charge transfer term&lt;br /&gt;
 VDW-CORRECTION&lt;br /&gt;
 &lt;br /&gt;
 INTEGRATOR  RESPA&lt;br /&gt;
 THERMOSTAT  BUSSI&lt;br /&gt;
 BAROSTAT    MONTECARLO&lt;br /&gt;
 &lt;br /&gt;
 POLAR-PREDICT&lt;br /&gt;
 POLAR-EPS 0.00001&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2138</id>
		<title>Ammm:Mm mpole</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2138"/>
		<updated>2025-08-12T15:07:43Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Local frame definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is electrostatic important? ==&lt;br /&gt;
&lt;br /&gt;
All forces are electrostatic in nature.&lt;br /&gt;
&lt;br /&gt;
== Buckingham, Advances in Chemical Physics, 12, 107-142 (1967)  ==&lt;br /&gt;
&lt;br /&gt;
https://doi.org/10.1002/9780470143582.ch2&lt;br /&gt;
&lt;br /&gt;
There is now general agreement that the significant forces between atoms and molecules have an electric origin. It is true that other sources exist, such as magnetic and gravitational interactions, but these can normally be neglected. When the molecules are far apart and the separation is large compared to the dimensions of the~molecules, the interaction energy is determined by the permanent electric moments, and their interactions comprise the electrostatic energy. The permanent moments produce a field that distorts the electronic structures of neighboring molecules leading to an additional interaction, the induction energy.&lt;br /&gt;
&lt;br /&gt;
== point charges ==&lt;br /&gt;
&lt;br /&gt;
 Atomic charges are not physical observables. Molecular charges, electrostatic potential and field are.&lt;br /&gt;
&lt;br /&gt;
Nitrogen molecule: what would be the atomic charge? &lt;br /&gt;
&lt;br /&gt;
[[Image:N2multipole.png|Figure 1. ESP]]&lt;br /&gt;
&lt;br /&gt;
== Multipole expansion ==&lt;br /&gt;
&lt;br /&gt;
Ref: [https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{{M}_{i}}={{\left[ {{q}_{i}},{{d}_{ix}},{{d}_{iy}},{{d}_{iz}},{{Q}_{ixx}},{{Q}_{ixy}},{{Q}_{ixz}},{{Q}_{iyx}},{{Q}_{iyy}},{{Q}_{iyz}},{{Q}_{izx}},{{Q}_{izy}},{{Q}_{izz}} \right]}^{T}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*monopole, i.e. point charge or zeroth moment of charge distribution &lt;br /&gt;
*dipole, or first moment of the charge distribution &lt;br /&gt;
&lt;br /&gt;
    (-) -&amp;gt; (+) is a dipole vector&lt;br /&gt;
   A point dipole is adipole at the limit of separation approaches zero.&lt;br /&gt;
   carbon dioxide: 0 (Debye)&lt;br /&gt;
   carbon monoxide: 0.112&lt;br /&gt;
   water vapor: 1.85&lt;br /&gt;
   water in liquid: 2.8&lt;br /&gt;
   potassium bromide: 10.41&lt;br /&gt;
&lt;br /&gt;
*quadrupole, second moment&lt;br /&gt;
[[File:Quadrupole.png|quadrupole|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; The traceless Cartesian &#039;&#039;&#039;quadrupole moment tensor&#039;&#039;&#039; of a charge distribution&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\sum_n q_n(3x_i x_j-r^2\delta_{ij})\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
or in tensor form: &lt;br /&gt;
[[File:Quadtensor.png|none|thumb|quadrupole tensor]]&lt;br /&gt;
[[File:Qtensor.png|none|thumb|Traceless q tensor]]&lt;br /&gt;
&lt;br /&gt;
for a discrete system with individual charges &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;q&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;n&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;, or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\int\, \rho(x)(3x_i x_j-r^2\delta_{ij})\, d^3x\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
for a continuous system with charge density &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ρ(&#039;&#039;x&#039;&#039;)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Cartesian multipole expansion of a charge distribution: &lt;br /&gt;
[[File:DMA.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Local frame definition ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;More detailed tutorials on multipole local frames (need to merge later):&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://biomolmd.org/mw/index.php/Tutorials:localframe&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vector and tensor values depend on the specific frames used. &lt;br /&gt;
&lt;br /&gt;
In amoeba.prm, water multipole values are defined for O (type 22) and H (23) atoms: &lt;br /&gt;
&lt;br /&gt;
 multipole    22   23  -23             -0.51966&lt;br /&gt;
                                      0.00000    0.00000    0.14279&lt;br /&gt;
                                      0.37928&lt;br /&gt;
                                      0.00000   -0.41809&lt;br /&gt;
                                      0.00000    0.00000    0.03881&lt;br /&gt;
 multipole    23   22   23              0.25983&lt;br /&gt;
                                     -0.03859    0.00000   -0.05818&lt;br /&gt;
                                     -0.03673&lt;br /&gt;
                                      0.00000   -0.10739&lt;br /&gt;
                                     -0.00203    0.00000    0.14412&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Types of frames:&lt;br /&gt;
* Z-then-X is the most common.&lt;br /&gt;
* Bisector for atoms like O in H2O. Note this requires dx=dy=0, Qxy=Qyz=0&lt;br /&gt;
* z-then-bisector is used for N in methyl amine, where Z is C and H-N-H bisector is used to define X. Note that it is necessary that dy=0, Qxy=Qyz=0&lt;br /&gt;
* z only (22 0 0) can be used for N in N2. In this case, the atom will have dx=dy=0, Qxx=Qyy=-1/2Qzz (traceless), and Qxy=Qyz=Qxz=0&lt;br /&gt;
&lt;br /&gt;
 For example, the C in methanol, you can use Z only:&lt;br /&gt;
 C_AT  0  0 &lt;br /&gt;
 Or you can use z-then-x:&lt;br /&gt;
 xxx  O_AT  HO_AT&lt;br /&gt;
 where HO_AT is the hydroxyl hydrogen atom type. So atoms that not immediately connected is also allowed!&lt;br /&gt;
&lt;br /&gt;
 Many examples can be found in tinker/param/amoeba09.prm&lt;br /&gt;
&lt;br /&gt;
In kmpole.f, you can find how tinker decide which frame is used by checking the sign and how many frame defining atoms there are:&lt;br /&gt;
               #type   kz_type    kx_type   ky_type_if_needed&lt;br /&gt;
               if (kz.ne.0 .and. kx.eq.0)  axt = &#039;Z-Only&#039;&lt;br /&gt;
               if (kz.lt.0 .or. kx.lt.0)  axt = &#039;Bisector&#039;&lt;br /&gt;
               if (kx.lt.0 .and. ky.lt.0)  axt = &#039;Z-Bisect&#039;&lt;br /&gt;
               if (max(kz,kx,ky) .lt. 0)  axt = &#039;3-Fold&#039;&lt;br /&gt;
&lt;br /&gt;
You can convert the atomic multipoles from one frame to another (your choice) using poledit.x&lt;br /&gt;
&lt;br /&gt;
Some notes about local frames here: [[Tutorials:localframe|AMOEBA Multipole Local Frames]]&lt;br /&gt;
&lt;br /&gt;
[[File:Localframe.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Spherical multipoles  ==&lt;br /&gt;
&lt;br /&gt;
Multipole can also be obtained by expanding in Legendre polynomial, instead of Taylor expansion. The potential due to a point charge can be expanded: &lt;br /&gt;
[[File:Smp.png|thumb|Spherical multipoles]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Phi (r, \theta ) \propto \frac{1}{R} = \frac{1}{\sqrt{r^{2} + a^{2} - 2ar \cos\theta}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If r &amp;amp;gt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{a}{r} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
if r &amp;amp;lt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{r}{a} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The same conclusion can be arrived at by solving the electric potential according to Laplace equation, &amp;lt;math&amp;gt;\nabla^2 \Phi(\mathbf{x})=0&amp;lt;/math&amp;gt;, by separation of variables. The solution takes the form of &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(r,\theta)=\sum_{\ell=0}^{\infty} \left[ A_\ell r^\ell + B_\ell r^{-(\ell+1)} \right] P_\ell(\cos\theta).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B_\ell&amp;lt;/math&amp;gt; depend on the boundary conditions - Jackson, J.D. &#039;&#039;Classical Electrodynamics&#039;&#039;, 3rd edition, Wiley &amp;amp;amp; Sons, 1999. page 103&lt;br /&gt;
&lt;br /&gt;
 A more detailed derivation of potential in spherical form for a point charge embedded in a dielectric sphere &lt;br /&gt;
 can be found in &amp;lt;ref&amp;gt; Cai et al. Extending the fast multipole method to charges inside or outside a dielectric sphere, Journal of Computational Physics 223 (2007) 846–864 2007&amp;lt;/ref&amp;gt; When the dielectric inside and outside the sphere &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ε = 1&amp;lt;/span&amp;gt;, the equation reduce to gas-phase potential. &lt;br /&gt;
 [[:File:Cai-jcp-2006.pdf|click]] for pdf&lt;br /&gt;
&lt;br /&gt;
You may see the potential expressed in the spherical harmonics or associated Legendre. The Legendre polynomial can be expressed in associated Legendre polynomial according to the addition theorem (&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;cos(θ&#039; − θ) = cosθ&#039;cosθ + sinθsinθ&#039;&amp;lt;/span&amp;gt;) &lt;br /&gt;
&lt;br /&gt;
Consider two unit vectors &#039;&#039;&#039;x&#039;&#039;&#039; and &#039;&#039;&#039;y&#039;&#039;&#039;, having spherical coordinates (θ,φ) and (θ′,φ′), respectively. The addition theorem states &amp;lt;math&amp;gt;P_\ell( \mathbf{x}\cdot\mathbf{y} ) = \frac{4\pi}{2\ell+1}\sum_{m=-\ell}^\ell Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \, Y_{\ell m}(\theta,\varphi). &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;P&#039;&#039;&amp;lt;sub&amp;gt;ℓ&amp;lt;/sub&amp;gt; is the Legendre of order ℓ. This expression is valid for both real and complex harmonics.This is valid for any orthonormal basis of spherical harmonics of degree ℓ. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The spherical harmonics &amp;lt;math&amp;gt; Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \,&amp;lt;/math&amp;gt;(angular portion of a set of solutions to Laplace&#039;s equation) are related to the associated Legendre polynomial: &amp;lt;math&amp;gt; Y_\ell^m( \theta , \varphi ) = \sqrt{{(2\ell+1)\over 4\pi}{(\ell-m)!\over (\ell+m)!}}  \, P_\ell^m ( \cos{\theta} ) \, e^{i m \varphi } &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Further reading: http://en.wikipedia.org/wiki/Spherical_harmonics&lt;br /&gt;
&lt;br /&gt;
== Why use higher order moments at atoms  ==&lt;br /&gt;
&lt;br /&gt;
Example I: Using atomic partial charge only is inadequate to give an accurate representation of electrostatic potential. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;500&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;&#039;&#039;&#039;Electrostatic Potential by Atomic Multipoles&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; | &amp;lt;br&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &#039;&#039;&#039;&#039;&#039;Relative Error (%)&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Molecule&#039;&#039;&#039;&#039;&#039;&amp;lt;b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole Only&#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole+Dipole&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;M+D+Q&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methane&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 13.53&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.04&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.39&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Water&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.44&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.88&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Ammonia&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 9.90&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 2.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methanol&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.35&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Acetylene&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 1.34&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.06&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Formamide&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.68&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.65&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methyl Acetate&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 6.03&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.67&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | DiMe Amine&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 16.27&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.48&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | NMA&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.26&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.30&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example II: HBond confiiguration &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole hbond ex.png|center|600x500px]] &lt;br /&gt;
&lt;br /&gt;
== How to derive permanent multipoles  ==&lt;br /&gt;
&lt;br /&gt;
=== DMA ===&lt;br /&gt;
&lt;br /&gt;
Distributed Multipole Analysis allows to derive atomic multipoles from ab initio calculations. &lt;br /&gt;
&lt;br /&gt;
Original DMA is described in &amp;lt;ref&amp;gt; A.J. Stone, Chem. Phys. Lett. 83 (1981) 233&amp;lt;/ref&amp;gt; and &amp;lt;ref&amp;gt;A.J. Stone, M. Alderton, Mol. Phys. 56 (1985) 1047&amp;lt;/ref&amp;gt;. The original DMA (explained in Estar manual below) works well for small molecule without diffuse function in the basis set. Stone improved the basis set dependence of DMA values, using a grid based quadrature for partitioning the contributions to the charge density from diffuse basis functions. &amp;lt;ref&amp;gt; Anthony J. Stone J. Chem. Theory Comput., 2005, 1 (6), pp 1128–1132 http://pubs.acs.org/doi/abs/10.1021/ct050190%2B &amp;lt;/ref&amp;gt; The DMA from this new procedure however is not as transferable as the original one among conformations. &lt;br /&gt;
&lt;br /&gt;
In Stone&#039;s latest GDMA program v2.2, the original DMA procedure is invoked by setting &amp;quot;switch=0&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Now we use the original DMA with a small basis set (MP2/6-311G**), and then &#039;&#039;&#039;optimize the DMA to higher level electrostatic potential on a grid&#039;&#039;&#039; (MP2/6/311++G2d,dp or aug-cc-pvtz) using &amp;quot;potential&amp;quot; program in TINKER. For flexible molecules, multiple conformations (e.g. local minima of alanine dipeptide) are used in the fitting. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Estar explains how DMA works:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar.png|500px]]&lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Cumulative Atomic Multipole Moments (CAMM) ===&lt;br /&gt;
&lt;br /&gt;
Explained above &lt;br /&gt;
&lt;br /&gt;
=== AIM (Bader) ===&lt;br /&gt;
&lt;br /&gt;
The theory of Atom In Molecule dissects molecules into atoms based on the topology of electron density. The main features are: &lt;br /&gt;
&lt;br /&gt;
*A molecule can be uniquely divided into a set of atomic volumes. These volumes are divided by a series of surfaces through which the gradient vector field of the electron density has no flux. Atomic properties such as atomic charge, dipole moment, and energies can be calculated by integrating their corresponding operators over the atomic volume. &lt;br /&gt;
*Two atoms are bonded if their atomic volumes share a common interatomic surface, and there is a (3, −1) critical point on this surface. A critical point is defined as a point in space where the gradient is zero. A (3, −1) critical point is defined as a critical point at which two of the eigenvalues of the Hessian matrix at the critical point are negative, while the other eigenvalue is positive. In other words, a bonding critical point is a first-order saddle point in the electron density scalar field. A bond path is the line along which the electron density is a maximum with respect to a neighboring line. Along the associated virial path the potential energy is maximally stabilizing. &lt;br /&gt;
*The interatomic bonds are classified as either closed shell or shared, if the Laplacian of the electron density at the critical point is positive or negative, respectively. &lt;br /&gt;
*Geometric bond strain can be gauged by examining the deviation of the bonding critical point from the interatomic axis between the two atoms. A large deviation implies larger bond strain.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Reading and software:&#039;&#039;&#039; &lt;br /&gt;
 http://www.chemistry.mcmaster.ca/bader/aim/ &lt;br /&gt;
 http://en.wikipedia.org/wiki/Atoms_in_molecules&lt;br /&gt;
&lt;br /&gt;
== Multipole interaction energy ==&lt;br /&gt;
&lt;br /&gt;
In the Cartesian Polytensor formalism,Applequist, J.,Journal of Mathematical Physics, 24 736-741 (1983), Applequist, J. Phys. A: Math. Gen. 22 (1989) 4303-4330.  Yong Kong, Multipole Electrostatic Methods for Protein Modeling with Reaction Field Treatment, Molecular Biophysics Program, Washington University, St. Louis, August 1997 http://dasher.wustl.edu/ponder/papers/kong-thesis.pdf the interaction energy between atoms i and j separated by rji is represented as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)=M_{i}^{T}{{T}_{ij}}{{M}_{j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 Mike Kong&#039;s thesis is a well written source for understanding these formula. &lt;br /&gt;
 PDF is available in the references at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
or in expanded form as &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole interaction.png|550px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)={{\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{i}}  \\&lt;br /&gt;
   {{\mu }_{ix}}  \\&lt;br /&gt;
   {{\mu }_{iy}}  \\&lt;br /&gt;
   {{\mu }_{iz}}  \\&lt;br /&gt;
   {{Q}_{ixx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]}^{t}}\left[ \begin{matrix}&lt;br /&gt;
   1 &amp;amp; \frac{\partial }{\partial {{x}_{j}}} &amp;amp; \frac{\partial }{\partial {{y}_{j}}} &amp;amp; \frac{\partial }{\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{x}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{y}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{z}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \ddots   \\&lt;br /&gt;
\end{matrix} \right]\left( \frac{1}{{{r}_{ji}}} \right)\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{j}}  \\&lt;br /&gt;
   {{\mu }_{jx}}  \\&lt;br /&gt;
   {{\mu }_{jy}}  \\&lt;br /&gt;
   {{\mu }_{jz}}  \\&lt;br /&gt;
   {{Q}_{jxx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note the multipoles above are in global frame. The multipoles are defined in local frame in the parameter files. At every energy and force evaluation, the multipoles are rotated from local frame to the global frame. &amp;lt;math&amp;gt;{{M}_{local}}={{\Re }^{-1}}M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For TINKER implementation of Ewald summation of multipole interaction energy, force, and torque see this paper (see Smith CCP5 paper) &lt;br /&gt;
&lt;br /&gt;
[[File:Smith-ccp5.pdf| 300px]]&lt;br /&gt;
&lt;br /&gt;
== Polarization effect ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cation - pi interaction&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Cation-pi.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water cluster association energy &#039;&#039;&#039;&amp;lt;ref&amp;gt; Ren and Ponder 2003 JPC B&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cluster.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water-Chloride binding enthalpy&#039;&#039;&#039;&amp;lt;ref&amp;gt;Grossfield, Ren and Ponder 2003 JACS&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cl.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Selected pages from Stone book on SAPT, distributed polarizabilities.&lt;br /&gt;
&lt;br /&gt;
[[file:Stone-SAPT-Polarizability.pdf | 500px ]]&lt;br /&gt;
&lt;br /&gt;
== Induced dipole ==&lt;br /&gt;
&lt;br /&gt;
Interactive polarizability model: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {{\mu }_{i}}={{\alpha }_{i}}\left( \sum_{j\ne i}{T_{ij}^{1}{{M}_{j}}}+\sum_{k\ne i}{T_{ik}^{11}{{\mu }_{k}}} \right) &amp;lt;/math&amp;gt; and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E \,&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
 1/2 is a result of balance between energy cost of creating induced dipoles and energy gain from induced dipole interactions &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;T_{ij}^{1}=\left[ {{\nabla }^{1}},{{\nabla }^{2}},{{\nabla }^{3}},... \right]&amp;lt;/math&amp;gt; is a 3 × 13 matrix with &amp;lt;math&amp;gt;{{\nabla }^{l+m+n}}=\frac{{{\partial }^{l}}}{\partial {{x}^{l}}}\frac{{{\partial }^{m}}}{\partial {{y}^{m}}}\frac{{{\partial }^{n}}}{\partial {{z}^{n}}}&amp;lt;/math&amp;gt; representing the second through fourth rows of the matrix T. &amp;lt;math&amp;gt;T_{ik}^{11}=\nabla _{ik}^{2}&amp;lt;/math&amp;gt; a 3×3 sub matrix, consists of elements in corresponding to the dipole moments. The atomic polarizability is isotropic. The off-diagonal elements the tensor, αi , are all zero and a single value for all three diagonal elements. Note that the effect of any permanent field on the induced dipole is additive. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Iterative solution with successive over-relaxation (SOR). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _{i}^{{}}(n+1)=(1-\omega )\mu _{i}^{{}}(n)\,\,+\,\,\omega \,\,\left[ \mu _{i}^{{}}(0)+{{\alpha }_{i}}\sum_{\{k\}}{T_{ik}^{11}\,\mu _{k}^{{}}(n)} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ω&amp;lt;/span&amp;gt; needs to be bigger than 0,5, typically 0.7. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;α&amp;lt;/span&amp;gt; is the atomic isotropic polarizability. &lt;br /&gt;
&lt;br /&gt;
*Atomic polarizability is not a physical quantity but molecular polarizability is an observable. &lt;br /&gt;
*The key of an empirical polarizability model is to reproduce the (QM or experimental) molecular response. &lt;br /&gt;
*Interactive (Applequist) -- use small atomic polarizability; no damping &amp;lt;ref&amp;gt;Jon Applequist,* James R. Carl, and Kwok-Keung Fung Journal of the American Chemical Society / 94:9 / May 3, 1972, 2952-2960.   &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Applequist1972.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Applequist is the first to use distributed atomic polarizability, to empirically compute CD spectrum and other optical properties of peptides. &lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist1979.pdf | 200px]]&lt;br /&gt;
*He also proposed a model that combine induced dipole and charges together.&lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist-1993.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Additive model (Dykstra)-- requires each atom has a polarizability tensor&lt;br /&gt;
&lt;br /&gt;
 [[Image:Stout-jpca1998.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Interactive (Thole) -- use damping. Provide better anisotropy in molecular response than Applequist model.&lt;br /&gt;
&lt;br /&gt;
[[Image:Thole.pdf | 200px]] [[Image:Thole-revisit-1998.pdf | 200px]] &lt;br /&gt;
&lt;br /&gt;
*A good review that compares above by Dykstra &lt;br /&gt;
&lt;br /&gt;
[[Image:Dykstra-jms2001.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Induce damp.png|500px]] [[Image:Mpole damp.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About damping in polarization&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We use &amp;quot;damping&amp;quot; to modulate polarization strength and avoid polarization catastrophe (induced dipoles do not converge, go to infinity during self consistent iteration).&lt;br /&gt;
&lt;br /&gt;
Physically the damping is replacing point charge/multipoles with smeared distribution.&lt;br /&gt;
Mathematically the damping is  is multiplying Coulomb potential/field with exp function: 1/r - &amp;gt; (1-exp[a*u^3)...)/r) above&lt;br /&gt;
&lt;br /&gt;
The damping coefficient &amp;quot;a&amp;quot; goes into the exponent. smaller &amp;quot;a&amp;quot; means stronger damping.&lt;br /&gt;
&lt;br /&gt;
AMOEBA assign each atom a polarizability and a damping coeff &amp;quot;a&amp;quot;, 99% time a=0.39. See &amp;quot;Polarize xxx &amp;quot; in prm file&lt;br /&gt;
For some divalent ions, we used smaller than 0.39.&lt;br /&gt;
In Tinker energy and force calculations, when two atoms polarize each other and each has own/different &amp;quot;a&amp;quot;, we use the smaller one. So for the divalent ion -water (or anything else), the smaller &amp;quot;a&amp;quot; is used.&lt;br /&gt;
This is why most time, we do not use &amp;quot;a&amp;quot; &amp;gt; 0.39. If we do, only that atom interacting with its own type will use this bigger &amp;quot;a&amp;quot;, every other pair uses 0.39 or smaller.&lt;br /&gt;
&lt;br /&gt;
When you optimize &amp;quot;a&amp;quot; for lanthanides -water , try to keep &amp;quot;a&amp;quot; &amp;lt;= 0.39 . Bigger values has no effect (since water O and H have 0.39) and numerical gradient wrt to &amp;quot;a&amp;quot; will be broken&lt;br /&gt;
&lt;br /&gt;
== Polarization group and Intramolecular polarization ==&lt;br /&gt;
&lt;br /&gt;
Polarization occurs intramolecularly as well as intermolecularly. &amp;lt;ref name=&amp;quot;jcc2002&amp;quot;&amp;gt;Ren and Ponder J Comput Chem 23: 1497–1506, 2002 http://www3.interscience.wiley.com/journal/99017014/abstract?CRETRY=1&amp;amp;amp;SRETRY=0 &amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Polar group.png]] &lt;br /&gt;
&lt;br /&gt;
A large molecule can be divided into (functional) groups, the permanent multipoles will polarize each other like small molecules would do to each other. The multipole derived from ab initio calculations for the above molecule would however include the intramolecular polarization already. &lt;br /&gt;
&lt;br /&gt;
Starting from the ab initio atomic multipoles (DMA) for an arbitrary conformer of a model compound, , one can derive the intrinsic “permanent” atomic multipole moments (PAM), , that satisfy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{i}^{DMA}=M_{i}^{{}}+{{\mu }_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where μi is the dipole induced by intramolecular polarization of Mi. The Mi is obtained by an iterative procedure similiar to above. This approach provides a route to derive multipole parameters from larger model compounds with intramolecualr polarization. We have previously shown that the combination of one set of permanent {Mi} and conformation-dependent induced dipole{µi} moments is able to reproduce the QM electrostatic potential of flexible molecules at various conformations.&amp;lt;ref name=&amp;quot;jcc2002&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction Energy ==&lt;br /&gt;
&lt;br /&gt;
Recall &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E&amp;lt;/math&amp;gt; or in pairwise &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}\sum_{i}^{{}}{{{\left( \mu _{i}^{ind} \right)}^{T}}{{E}_{i}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\left( {{\alpha }^{-1}}-{{T}^{11}} \right){{\mu }^{ind}}={{T}^{1}}M=E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;C = \left( {\alpha}^{-1}-{T}^{11}\right)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Force and gradient ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;F_{x,i}=-\frac{\partial U^{ind}_{system}}{\partial x_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{sys}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\left( \frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{C}^{-1}}E+{{E}^{T}}\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}E+{{E}^{T}}{{C}^{-1}}\frac{\partial E}{\partial {{x}_{k}}} \right),\begin{matrix}&lt;br /&gt;
   {} &amp;amp; k=1,2,3  \\&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}C+{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}=0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{\mu }^{ind}}+\frac{1}{2}{{E}^{T}}{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}{{C}^{-1}}E-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial E}{\partial {{x}_{k}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Define &amp;lt;math&amp;gt;M^t=M^{perm} + M^{ind}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;=-{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{1}}M}{\partial {{x}_{k}}}-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{11}}}{\partial {{x}_{k}}}{{\mu }^{ind}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
The above is in addition to the permanent ele forces (second term is related to torque, which can be converted to forces on frame defining atoms).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{t}}{\partial {{x}_{k}}}=-\frac{1}{2}{{\left( {{M}^{t}} \right)}^{T}}\frac{\partial {{T}^{1}}}{\partial {{x}_{k}}}{{M}^{t}}-{{\left( {{M}^{t}} \right)}^{T}}{{T}^{1}}\frac{\partial \Re }{\partial {{x}_{k}}}{{M}^{{}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2137</id>
		<title>Ammm:Mm mpole</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2137"/>
		<updated>2025-08-12T15:05:51Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Local frame definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is electrostatic important? ==&lt;br /&gt;
&lt;br /&gt;
All forces are electrostatic in nature.&lt;br /&gt;
&lt;br /&gt;
== Buckingham, Advances in Chemical Physics, 12, 107-142 (1967)  ==&lt;br /&gt;
&lt;br /&gt;
https://doi.org/10.1002/9780470143582.ch2&lt;br /&gt;
&lt;br /&gt;
There is now general agreement that the significant forces between atoms and molecules have an electric origin. It is true that other sources exist, such as magnetic and gravitational interactions, but these can normally be neglected. When the molecules are far apart and the separation is large compared to the dimensions of the~molecules, the interaction energy is determined by the permanent electric moments, and their interactions comprise the electrostatic energy. The permanent moments produce a field that distorts the electronic structures of neighboring molecules leading to an additional interaction, the induction energy.&lt;br /&gt;
&lt;br /&gt;
== point charges ==&lt;br /&gt;
&lt;br /&gt;
 Atomic charges are not physical observables. Molecular charges, electrostatic potential and field are.&lt;br /&gt;
&lt;br /&gt;
Nitrogen molecule: what would be the atomic charge? &lt;br /&gt;
&lt;br /&gt;
[[Image:N2multipole.png|Figure 1. ESP]]&lt;br /&gt;
&lt;br /&gt;
== Multipole expansion ==&lt;br /&gt;
&lt;br /&gt;
Ref: [https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{{M}_{i}}={{\left[ {{q}_{i}},{{d}_{ix}},{{d}_{iy}},{{d}_{iz}},{{Q}_{ixx}},{{Q}_{ixy}},{{Q}_{ixz}},{{Q}_{iyx}},{{Q}_{iyy}},{{Q}_{iyz}},{{Q}_{izx}},{{Q}_{izy}},{{Q}_{izz}} \right]}^{T}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*monopole, i.e. point charge or zeroth moment of charge distribution &lt;br /&gt;
*dipole, or first moment of the charge distribution &lt;br /&gt;
&lt;br /&gt;
    (-) -&amp;gt; (+) is a dipole vector&lt;br /&gt;
   A point dipole is adipole at the limit of separation approaches zero.&lt;br /&gt;
   carbon dioxide: 0 (Debye)&lt;br /&gt;
   carbon monoxide: 0.112&lt;br /&gt;
   water vapor: 1.85&lt;br /&gt;
   water in liquid: 2.8&lt;br /&gt;
   potassium bromide: 10.41&lt;br /&gt;
&lt;br /&gt;
*quadrupole, second moment&lt;br /&gt;
[[File:Quadrupole.png|quadrupole|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; The traceless Cartesian &#039;&#039;&#039;quadrupole moment tensor&#039;&#039;&#039; of a charge distribution&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\sum_n q_n(3x_i x_j-r^2\delta_{ij})\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
or in tensor form: &lt;br /&gt;
[[File:Quadtensor.png|none|thumb|quadrupole tensor]]&lt;br /&gt;
[[File:Qtensor.png|none|thumb|Traceless q tensor]]&lt;br /&gt;
&lt;br /&gt;
for a discrete system with individual charges &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;q&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;n&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;, or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\int\, \rho(x)(3x_i x_j-r^2\delta_{ij})\, d^3x\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
for a continuous system with charge density &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ρ(&#039;&#039;x&#039;&#039;)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Cartesian multipole expansion of a charge distribution: &lt;br /&gt;
[[File:DMA.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Local frame definition ==&lt;br /&gt;
&#039;&#039;&#039;More detailed tutorials on multipole local frames (need to merge later):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
https://biomolmd.org/mw/index.php/Tutorials:localframe&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vector and tensor values depend on the specific frames used. &lt;br /&gt;
&lt;br /&gt;
In amoeba.prm, water multipole values are defined for O (type 22) and H (23) atoms: &lt;br /&gt;
&lt;br /&gt;
 multipole    22   23  -23             -0.51966&lt;br /&gt;
                                      0.00000    0.00000    0.14279&lt;br /&gt;
                                      0.37928&lt;br /&gt;
                                      0.00000   -0.41809&lt;br /&gt;
                                      0.00000    0.00000    0.03881&lt;br /&gt;
 multipole    23   22   23              0.25983&lt;br /&gt;
                                     -0.03859    0.00000   -0.05818&lt;br /&gt;
                                     -0.03673&lt;br /&gt;
                                      0.00000   -0.10739&lt;br /&gt;
                                     -0.00203    0.00000    0.14412&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Types of frames:&lt;br /&gt;
* Z-then-X is the most common.&lt;br /&gt;
* Bisector for atoms like O in H2O. Note this requires dx=dy=0, Qxy=Qyz=0&lt;br /&gt;
* z-then-bisector is used for N in methyl amine, where Z is C and H-N-H bisector is used to define X. Note that it is necessary that dy=0, Qxy=Qyz=0&lt;br /&gt;
* z only (22 0 0) can be used for N in N2. In this case, the atom will have dx=dy=0, Qxx=Qyy=-1/2Qzz (traceless), and Qxy=Qyz=Qxz=0&lt;br /&gt;
&lt;br /&gt;
 For example, the C in methanol, you can use Z only:&lt;br /&gt;
 C_AT  0  0 &lt;br /&gt;
 Or you can use z-then-x:&lt;br /&gt;
 xxx  O_AT  HO_AT&lt;br /&gt;
 where HO_AT is the hydroxyl hydrogen atom type. So atoms that not immediately connected is also allowed!&lt;br /&gt;
&lt;br /&gt;
 Many examples can be found in tinker/param/amoeba09.prm&lt;br /&gt;
&lt;br /&gt;
In kmpole.f, you can find how tinker decide which frame is used by checking the sign and how many frame defining atoms there are:&lt;br /&gt;
               #type   kz_type    kx_type   ky_type_if_needed&lt;br /&gt;
               if (kz.ne.0 .and. kx.eq.0)  axt = &#039;Z-Only&#039;&lt;br /&gt;
               if (kz.lt.0 .or. kx.lt.0)  axt = &#039;Bisector&#039;&lt;br /&gt;
               if (kx.lt.0 .and. ky.lt.0)  axt = &#039;Z-Bisect&#039;&lt;br /&gt;
               if (max(kz,kx,ky) .lt. 0)  axt = &#039;3-Fold&#039;&lt;br /&gt;
&lt;br /&gt;
You can convert the atomic multipoles from one frame to another (your choice) using poledit.x&lt;br /&gt;
&lt;br /&gt;
Some notes about local frames here: [[Tutorials:localframe|AMOEBA Multipole Local Frames]]&lt;br /&gt;
&lt;br /&gt;
[[File:Localframe.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Spherical multipoles  ==&lt;br /&gt;
&lt;br /&gt;
Multipole can also be obtained by expanding in Legendre polynomial, instead of Taylor expansion. The potential due to a point charge can be expanded: &lt;br /&gt;
[[File:Smp.png|thumb|Spherical multipoles]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Phi (r, \theta ) \propto \frac{1}{R} = \frac{1}{\sqrt{r^{2} + a^{2} - 2ar \cos\theta}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If r &amp;amp;gt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{a}{r} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
if r &amp;amp;lt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{r}{a} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The same conclusion can be arrived at by solving the electric potential according to Laplace equation, &amp;lt;math&amp;gt;\nabla^2 \Phi(\mathbf{x})=0&amp;lt;/math&amp;gt;, by separation of variables. The solution takes the form of &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(r,\theta)=\sum_{\ell=0}^{\infty} \left[ A_\ell r^\ell + B_\ell r^{-(\ell+1)} \right] P_\ell(\cos\theta).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B_\ell&amp;lt;/math&amp;gt; depend on the boundary conditions - Jackson, J.D. &#039;&#039;Classical Electrodynamics&#039;&#039;, 3rd edition, Wiley &amp;amp;amp; Sons, 1999. page 103&lt;br /&gt;
&lt;br /&gt;
 A more detailed derivation of potential in spherical form for a point charge embedded in a dielectric sphere &lt;br /&gt;
 can be found in &amp;lt;ref&amp;gt; Cai et al. Extending the fast multipole method to charges inside or outside a dielectric sphere, Journal of Computational Physics 223 (2007) 846–864 2007&amp;lt;/ref&amp;gt; When the dielectric inside and outside the sphere &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ε = 1&amp;lt;/span&amp;gt;, the equation reduce to gas-phase potential. &lt;br /&gt;
 [[:File:Cai-jcp-2006.pdf|click]] for pdf&lt;br /&gt;
&lt;br /&gt;
You may see the potential expressed in the spherical harmonics or associated Legendre. The Legendre polynomial can be expressed in associated Legendre polynomial according to the addition theorem (&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;cos(θ&#039; − θ) = cosθ&#039;cosθ + sinθsinθ&#039;&amp;lt;/span&amp;gt;) &lt;br /&gt;
&lt;br /&gt;
Consider two unit vectors &#039;&#039;&#039;x&#039;&#039;&#039; and &#039;&#039;&#039;y&#039;&#039;&#039;, having spherical coordinates (θ,φ) and (θ′,φ′), respectively. The addition theorem states &amp;lt;math&amp;gt;P_\ell( \mathbf{x}\cdot\mathbf{y} ) = \frac{4\pi}{2\ell+1}\sum_{m=-\ell}^\ell Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \, Y_{\ell m}(\theta,\varphi). &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;P&#039;&#039;&amp;lt;sub&amp;gt;ℓ&amp;lt;/sub&amp;gt; is the Legendre of order ℓ. This expression is valid for both real and complex harmonics.This is valid for any orthonormal basis of spherical harmonics of degree ℓ. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The spherical harmonics &amp;lt;math&amp;gt; Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \,&amp;lt;/math&amp;gt;(angular portion of a set of solutions to Laplace&#039;s equation) are related to the associated Legendre polynomial: &amp;lt;math&amp;gt; Y_\ell^m( \theta , \varphi ) = \sqrt{{(2\ell+1)\over 4\pi}{(\ell-m)!\over (\ell+m)!}}  \, P_\ell^m ( \cos{\theta} ) \, e^{i m \varphi } &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Further reading: http://en.wikipedia.org/wiki/Spherical_harmonics&lt;br /&gt;
&lt;br /&gt;
== Why use higher order moments at atoms  ==&lt;br /&gt;
&lt;br /&gt;
Example I: Using atomic partial charge only is inadequate to give an accurate representation of electrostatic potential. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;500&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;&#039;&#039;&#039;Electrostatic Potential by Atomic Multipoles&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; | &amp;lt;br&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &#039;&#039;&#039;&#039;&#039;Relative Error (%)&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Molecule&#039;&#039;&#039;&#039;&#039;&amp;lt;b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole Only&#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole+Dipole&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;M+D+Q&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methane&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 13.53&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.04&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.39&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Water&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.44&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.88&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Ammonia&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 9.90&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 2.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methanol&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.35&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Acetylene&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 1.34&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.06&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Formamide&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.68&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.65&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methyl Acetate&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 6.03&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.67&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | DiMe Amine&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 16.27&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.48&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | NMA&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.26&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.30&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example II: HBond confiiguration &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole hbond ex.png|center|600x500px]] &lt;br /&gt;
&lt;br /&gt;
== How to derive permanent multipoles  ==&lt;br /&gt;
&lt;br /&gt;
=== DMA ===&lt;br /&gt;
&lt;br /&gt;
Distributed Multipole Analysis allows to derive atomic multipoles from ab initio calculations. &lt;br /&gt;
&lt;br /&gt;
Original DMA is described in &amp;lt;ref&amp;gt; A.J. Stone, Chem. Phys. Lett. 83 (1981) 233&amp;lt;/ref&amp;gt; and &amp;lt;ref&amp;gt;A.J. Stone, M. Alderton, Mol. Phys. 56 (1985) 1047&amp;lt;/ref&amp;gt;. The original DMA (explained in Estar manual below) works well for small molecule without diffuse function in the basis set. Stone improved the basis set dependence of DMA values, using a grid based quadrature for partitioning the contributions to the charge density from diffuse basis functions. &amp;lt;ref&amp;gt; Anthony J. Stone J. Chem. Theory Comput., 2005, 1 (6), pp 1128–1132 http://pubs.acs.org/doi/abs/10.1021/ct050190%2B &amp;lt;/ref&amp;gt; The DMA from this new procedure however is not as transferable as the original one among conformations. &lt;br /&gt;
&lt;br /&gt;
In Stone&#039;s latest GDMA program v2.2, the original DMA procedure is invoked by setting &amp;quot;switch=0&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Now we use the original DMA with a small basis set (MP2/6-311G**), and then &#039;&#039;&#039;optimize the DMA to higher level electrostatic potential on a grid&#039;&#039;&#039; (MP2/6/311++G2d,dp or aug-cc-pvtz) using &amp;quot;potential&amp;quot; program in TINKER. For flexible molecules, multiple conformations (e.g. local minima of alanine dipeptide) are used in the fitting. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Estar explains how DMA works:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar.png|500px]]&lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Cumulative Atomic Multipole Moments (CAMM) ===&lt;br /&gt;
&lt;br /&gt;
Explained above &lt;br /&gt;
&lt;br /&gt;
=== AIM (Bader) ===&lt;br /&gt;
&lt;br /&gt;
The theory of Atom In Molecule dissects molecules into atoms based on the topology of electron density. The main features are: &lt;br /&gt;
&lt;br /&gt;
*A molecule can be uniquely divided into a set of atomic volumes. These volumes are divided by a series of surfaces through which the gradient vector field of the electron density has no flux. Atomic properties such as atomic charge, dipole moment, and energies can be calculated by integrating their corresponding operators over the atomic volume. &lt;br /&gt;
*Two atoms are bonded if their atomic volumes share a common interatomic surface, and there is a (3, −1) critical point on this surface. A critical point is defined as a point in space where the gradient is zero. A (3, −1) critical point is defined as a critical point at which two of the eigenvalues of the Hessian matrix at the critical point are negative, while the other eigenvalue is positive. In other words, a bonding critical point is a first-order saddle point in the electron density scalar field. A bond path is the line along which the electron density is a maximum with respect to a neighboring line. Along the associated virial path the potential energy is maximally stabilizing. &lt;br /&gt;
*The interatomic bonds are classified as either closed shell or shared, if the Laplacian of the electron density at the critical point is positive or negative, respectively. &lt;br /&gt;
*Geometric bond strain can be gauged by examining the deviation of the bonding critical point from the interatomic axis between the two atoms. A large deviation implies larger bond strain.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Reading and software:&#039;&#039;&#039; &lt;br /&gt;
 http://www.chemistry.mcmaster.ca/bader/aim/ &lt;br /&gt;
 http://en.wikipedia.org/wiki/Atoms_in_molecules&lt;br /&gt;
&lt;br /&gt;
== Multipole interaction energy ==&lt;br /&gt;
&lt;br /&gt;
In the Cartesian Polytensor formalism,Applequist, J.,Journal of Mathematical Physics, 24 736-741 (1983), Applequist, J. Phys. A: Math. Gen. 22 (1989) 4303-4330.  Yong Kong, Multipole Electrostatic Methods for Protein Modeling with Reaction Field Treatment, Molecular Biophysics Program, Washington University, St. Louis, August 1997 http://dasher.wustl.edu/ponder/papers/kong-thesis.pdf the interaction energy between atoms i and j separated by rji is represented as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)=M_{i}^{T}{{T}_{ij}}{{M}_{j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 Mike Kong&#039;s thesis is a well written source for understanding these formula. &lt;br /&gt;
 PDF is available in the references at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
or in expanded form as &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole interaction.png|550px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)={{\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{i}}  \\&lt;br /&gt;
   {{\mu }_{ix}}  \\&lt;br /&gt;
   {{\mu }_{iy}}  \\&lt;br /&gt;
   {{\mu }_{iz}}  \\&lt;br /&gt;
   {{Q}_{ixx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]}^{t}}\left[ \begin{matrix}&lt;br /&gt;
   1 &amp;amp; \frac{\partial }{\partial {{x}_{j}}} &amp;amp; \frac{\partial }{\partial {{y}_{j}}} &amp;amp; \frac{\partial }{\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{x}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{y}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{z}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \ddots   \\&lt;br /&gt;
\end{matrix} \right]\left( \frac{1}{{{r}_{ji}}} \right)\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{j}}  \\&lt;br /&gt;
   {{\mu }_{jx}}  \\&lt;br /&gt;
   {{\mu }_{jy}}  \\&lt;br /&gt;
   {{\mu }_{jz}}  \\&lt;br /&gt;
   {{Q}_{jxx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note the multipoles above are in global frame. The multipoles are defined in local frame in the parameter files. At every energy and force evaluation, the multipoles are rotated from local frame to the global frame. &amp;lt;math&amp;gt;{{M}_{local}}={{\Re }^{-1}}M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For TINKER implementation of Ewald summation of multipole interaction energy, force, and torque see this paper (see Smith CCP5 paper) &lt;br /&gt;
&lt;br /&gt;
[[File:Smith-ccp5.pdf| 300px]]&lt;br /&gt;
&lt;br /&gt;
== Polarization effect ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cation - pi interaction&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Cation-pi.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water cluster association energy &#039;&#039;&#039;&amp;lt;ref&amp;gt; Ren and Ponder 2003 JPC B&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cluster.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water-Chloride binding enthalpy&#039;&#039;&#039;&amp;lt;ref&amp;gt;Grossfield, Ren and Ponder 2003 JACS&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cl.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Selected pages from Stone book on SAPT, distributed polarizabilities.&lt;br /&gt;
&lt;br /&gt;
[[file:Stone-SAPT-Polarizability.pdf | 500px ]]&lt;br /&gt;
&lt;br /&gt;
== Induced dipole ==&lt;br /&gt;
&lt;br /&gt;
Interactive polarizability model: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {{\mu }_{i}}={{\alpha }_{i}}\left( \sum_{j\ne i}{T_{ij}^{1}{{M}_{j}}}+\sum_{k\ne i}{T_{ik}^{11}{{\mu }_{k}}} \right) &amp;lt;/math&amp;gt; and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E \,&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
 1/2 is a result of balance between energy cost of creating induced dipoles and energy gain from induced dipole interactions &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;T_{ij}^{1}=\left[ {{\nabla }^{1}},{{\nabla }^{2}},{{\nabla }^{3}},... \right]&amp;lt;/math&amp;gt; is a 3 × 13 matrix with &amp;lt;math&amp;gt;{{\nabla }^{l+m+n}}=\frac{{{\partial }^{l}}}{\partial {{x}^{l}}}\frac{{{\partial }^{m}}}{\partial {{y}^{m}}}\frac{{{\partial }^{n}}}{\partial {{z}^{n}}}&amp;lt;/math&amp;gt; representing the second through fourth rows of the matrix T. &amp;lt;math&amp;gt;T_{ik}^{11}=\nabla _{ik}^{2}&amp;lt;/math&amp;gt; a 3×3 sub matrix, consists of elements in corresponding to the dipole moments. The atomic polarizability is isotropic. The off-diagonal elements the tensor, αi , are all zero and a single value for all three diagonal elements. Note that the effect of any permanent field on the induced dipole is additive. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Iterative solution with successive over-relaxation (SOR). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _{i}^{{}}(n+1)=(1-\omega )\mu _{i}^{{}}(n)\,\,+\,\,\omega \,\,\left[ \mu _{i}^{{}}(0)+{{\alpha }_{i}}\sum_{\{k\}}{T_{ik}^{11}\,\mu _{k}^{{}}(n)} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ω&amp;lt;/span&amp;gt; needs to be bigger than 0,5, typically 0.7. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;α&amp;lt;/span&amp;gt; is the atomic isotropic polarizability. &lt;br /&gt;
&lt;br /&gt;
*Atomic polarizability is not a physical quantity but molecular polarizability is an observable. &lt;br /&gt;
*The key of an empirical polarizability model is to reproduce the (QM or experimental) molecular response. &lt;br /&gt;
*Interactive (Applequist) -- use small atomic polarizability; no damping &amp;lt;ref&amp;gt;Jon Applequist,* James R. Carl, and Kwok-Keung Fung Journal of the American Chemical Society / 94:9 / May 3, 1972, 2952-2960.   &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Applequist1972.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Applequist is the first to use distributed atomic polarizability, to empirically compute CD spectrum and other optical properties of peptides. &lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist1979.pdf | 200px]]&lt;br /&gt;
*He also proposed a model that combine induced dipole and charges together.&lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist-1993.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Additive model (Dykstra)-- requires each atom has a polarizability tensor&lt;br /&gt;
&lt;br /&gt;
 [[Image:Stout-jpca1998.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Interactive (Thole) -- use damping. Provide better anisotropy in molecular response than Applequist model.&lt;br /&gt;
&lt;br /&gt;
[[Image:Thole.pdf | 200px]] [[Image:Thole-revisit-1998.pdf | 200px]] &lt;br /&gt;
&lt;br /&gt;
*A good review that compares above by Dykstra &lt;br /&gt;
&lt;br /&gt;
[[Image:Dykstra-jms2001.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Induce damp.png|500px]] [[Image:Mpole damp.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About damping in polarization&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We use &amp;quot;damping&amp;quot; to modulate polarization strength and avoid polarization catastrophe (induced dipoles do not converge, go to infinity during self consistent iteration).&lt;br /&gt;
&lt;br /&gt;
Physically the damping is replacing point charge/multipoles with smeared distribution.&lt;br /&gt;
Mathematically the damping is  is multiplying Coulomb potential/field with exp function: 1/r - &amp;gt; (1-exp[a*u^3)...)/r) above&lt;br /&gt;
&lt;br /&gt;
The damping coefficient &amp;quot;a&amp;quot; goes into the exponent. smaller &amp;quot;a&amp;quot; means stronger damping.&lt;br /&gt;
&lt;br /&gt;
AMOEBA assign each atom a polarizability and a damping coeff &amp;quot;a&amp;quot;, 99% time a=0.39. See &amp;quot;Polarize xxx &amp;quot; in prm file&lt;br /&gt;
For some divalent ions, we used smaller than 0.39.&lt;br /&gt;
In Tinker energy and force calculations, when two atoms polarize each other and each has own/different &amp;quot;a&amp;quot;, we use the smaller one. So for the divalent ion -water (or anything else), the smaller &amp;quot;a&amp;quot; is used.&lt;br /&gt;
This is why most time, we do not use &amp;quot;a&amp;quot; &amp;gt; 0.39. If we do, only that atom interacting with its own type will use this bigger &amp;quot;a&amp;quot;, every other pair uses 0.39 or smaller.&lt;br /&gt;
&lt;br /&gt;
When you optimize &amp;quot;a&amp;quot; for lanthanides -water , try to keep &amp;quot;a&amp;quot; &amp;lt;= 0.39 . Bigger values has no effect (since water O and H have 0.39) and numerical gradient wrt to &amp;quot;a&amp;quot; will be broken&lt;br /&gt;
&lt;br /&gt;
== Polarization group and Intramolecular polarization ==&lt;br /&gt;
&lt;br /&gt;
Polarization occurs intramolecularly as well as intermolecularly. &amp;lt;ref name=&amp;quot;jcc2002&amp;quot;&amp;gt;Ren and Ponder J Comput Chem 23: 1497–1506, 2002 http://www3.interscience.wiley.com/journal/99017014/abstract?CRETRY=1&amp;amp;amp;SRETRY=0 &amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Polar group.png]] &lt;br /&gt;
&lt;br /&gt;
A large molecule can be divided into (functional) groups, the permanent multipoles will polarize each other like small molecules would do to each other. The multipole derived from ab initio calculations for the above molecule would however include the intramolecular polarization already. &lt;br /&gt;
&lt;br /&gt;
Starting from the ab initio atomic multipoles (DMA) for an arbitrary conformer of a model compound, , one can derive the intrinsic “permanent” atomic multipole moments (PAM), , that satisfy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{i}^{DMA}=M_{i}^{{}}+{{\mu }_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where μi is the dipole induced by intramolecular polarization of Mi. The Mi is obtained by an iterative procedure similiar to above. This approach provides a route to derive multipole parameters from larger model compounds with intramolecualr polarization. We have previously shown that the combination of one set of permanent {Mi} and conformation-dependent induced dipole{µi} moments is able to reproduce the QM electrostatic potential of flexible molecules at various conformations.&amp;lt;ref name=&amp;quot;jcc2002&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction Energy ==&lt;br /&gt;
&lt;br /&gt;
Recall &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E&amp;lt;/math&amp;gt; or in pairwise &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}\sum_{i}^{{}}{{{\left( \mu _{i}^{ind} \right)}^{T}}{{E}_{i}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\left( {{\alpha }^{-1}}-{{T}^{11}} \right){{\mu }^{ind}}={{T}^{1}}M=E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;C = \left( {\alpha}^{-1}-{T}^{11}\right)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Force and gradient ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;F_{x,i}=-\frac{\partial U^{ind}_{system}}{\partial x_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{sys}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\left( \frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{C}^{-1}}E+{{E}^{T}}\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}E+{{E}^{T}}{{C}^{-1}}\frac{\partial E}{\partial {{x}_{k}}} \right),\begin{matrix}&lt;br /&gt;
   {} &amp;amp; k=1,2,3  \\&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}C+{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}=0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{\mu }^{ind}}+\frac{1}{2}{{E}^{T}}{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}{{C}^{-1}}E-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial E}{\partial {{x}_{k}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Define &amp;lt;math&amp;gt;M^t=M^{perm} + M^{ind}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;=-{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{1}}M}{\partial {{x}_{k}}}-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{11}}}{\partial {{x}_{k}}}{{\mu }^{ind}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
The above is in addition to the permanent ele forces (second term is related to torque, which can be converted to forces on frame defining atoms).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{t}}{\partial {{x}_{k}}}=-\frac{1}{2}{{\left( {{M}^{t}} \right)}^{T}}\frac{\partial {{T}^{1}}}{\partial {{x}_{k}}}{{M}^{t}}-{{\left( {{M}^{t}} \right)}^{T}}{{T}^{1}}\frac{\partial \Re }{\partial {{x}_{k}}}{{M}^{{}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2136</id>
		<title>Ammm:Mm mpole</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2136"/>
		<updated>2025-08-12T15:01:59Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Local frame definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is electrostatic important? ==&lt;br /&gt;
&lt;br /&gt;
All forces are electrostatic in nature.&lt;br /&gt;
&lt;br /&gt;
== Buckingham, Advances in Chemical Physics, 12, 107-142 (1967)  ==&lt;br /&gt;
&lt;br /&gt;
https://doi.org/10.1002/9780470143582.ch2&lt;br /&gt;
&lt;br /&gt;
There is now general agreement that the significant forces between atoms and molecules have an electric origin. It is true that other sources exist, such as magnetic and gravitational interactions, but these can normally be neglected. When the molecules are far apart and the separation is large compared to the dimensions of the~molecules, the interaction energy is determined by the permanent electric moments, and their interactions comprise the electrostatic energy. The permanent moments produce a field that distorts the electronic structures of neighboring molecules leading to an additional interaction, the induction energy.&lt;br /&gt;
&lt;br /&gt;
== point charges ==&lt;br /&gt;
&lt;br /&gt;
 Atomic charges are not physical observables. Molecular charges, electrostatic potential and field are.&lt;br /&gt;
&lt;br /&gt;
Nitrogen molecule: what would be the atomic charge? &lt;br /&gt;
&lt;br /&gt;
[[Image:N2multipole.png|Figure 1. ESP]]&lt;br /&gt;
&lt;br /&gt;
== Multipole expansion ==&lt;br /&gt;
&lt;br /&gt;
Ref: [https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{{M}_{i}}={{\left[ {{q}_{i}},{{d}_{ix}},{{d}_{iy}},{{d}_{iz}},{{Q}_{ixx}},{{Q}_{ixy}},{{Q}_{ixz}},{{Q}_{iyx}},{{Q}_{iyy}},{{Q}_{iyz}},{{Q}_{izx}},{{Q}_{izy}},{{Q}_{izz}} \right]}^{T}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*monopole, i.e. point charge or zeroth moment of charge distribution &lt;br /&gt;
*dipole, or first moment of the charge distribution &lt;br /&gt;
&lt;br /&gt;
    (-) -&amp;gt; (+) is a dipole vector&lt;br /&gt;
   A point dipole is adipole at the limit of separation approaches zero.&lt;br /&gt;
   carbon dioxide: 0 (Debye)&lt;br /&gt;
   carbon monoxide: 0.112&lt;br /&gt;
   water vapor: 1.85&lt;br /&gt;
   water in liquid: 2.8&lt;br /&gt;
   potassium bromide: 10.41&lt;br /&gt;
&lt;br /&gt;
*quadrupole, second moment&lt;br /&gt;
[[File:Quadrupole.png|quadrupole|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; The traceless Cartesian &#039;&#039;&#039;quadrupole moment tensor&#039;&#039;&#039; of a charge distribution&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\sum_n q_n(3x_i x_j-r^2\delta_{ij})\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
or in tensor form: &lt;br /&gt;
[[File:Quadtensor.png|none|thumb|quadrupole tensor]]&lt;br /&gt;
[[File:Qtensor.png|none|thumb|Traceless q tensor]]&lt;br /&gt;
&lt;br /&gt;
for a discrete system with individual charges &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;q&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;n&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;, or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\int\, \rho(x)(3x_i x_j-r^2\delta_{ij})\, d^3x\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
for a continuous system with charge density &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ρ(&#039;&#039;x&#039;&#039;)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Cartesian multipole expansion of a charge distribution: &lt;br /&gt;
[[File:DMA.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Local frame definition ==&lt;br /&gt;
More detailed tutorials on multipole local frames (need to merge later): &lt;br /&gt;
https://biomolmd.org/mw/index.php/Tutorials:localframe &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vector and tensor values depend on the specific frames used. &lt;br /&gt;
&lt;br /&gt;
In amoeba.prm, water multipole values are defined for O (type 22) and H (23) atoms: &lt;br /&gt;
&lt;br /&gt;
 multipole    22   23  -23             -0.51966&lt;br /&gt;
                                      0.00000    0.00000    0.14279&lt;br /&gt;
                                      0.37928&lt;br /&gt;
                                      0.00000   -0.41809&lt;br /&gt;
                                      0.00000    0.00000    0.03881&lt;br /&gt;
 multipole    23   22   23              0.25983&lt;br /&gt;
                                     -0.03859    0.00000   -0.05818&lt;br /&gt;
                                     -0.03673&lt;br /&gt;
                                      0.00000   -0.10739&lt;br /&gt;
                                     -0.00203    0.00000    0.14412&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Types of frames:&lt;br /&gt;
* Z-then-X is the most common.&lt;br /&gt;
* Bisector for atoms like O in H2O. Note this requires dx=dy=0, Qxy=Qyz=0&lt;br /&gt;
* z-then-bisector is used for N in methyl amine, where Z is C and H-N-H bisector is used to define X. Note that it is necessary that dy=0, Qxy=Qyz=0&lt;br /&gt;
* z only (22 0 0) can be used for N in N2. In this case, the atom will have dx=dy=0, Qxx=Qyy=-1/2Qzz (traceless), and Qxy=Qyz=Qxz=0&lt;br /&gt;
&lt;br /&gt;
 For example, the C in methanol, you can use Z only:&lt;br /&gt;
 C_AT  0  0 &lt;br /&gt;
 Or you can use z-then-x:&lt;br /&gt;
 xxx  O_AT  HO_AT&lt;br /&gt;
 where HO_AT is the hydroxyl hydrogen atom type. So atoms that not immediately connected is also allowed!&lt;br /&gt;
&lt;br /&gt;
 Many examples can be found in tinker/param/amoeba09.prm&lt;br /&gt;
&lt;br /&gt;
In kmpole.f, you can find how tinker decide which frame is used by checking the sign and how many frame defining atoms there are:&lt;br /&gt;
               #type   kz_type    kx_type   ky_type_if_needed&lt;br /&gt;
               if (kz.ne.0 .and. kx.eq.0)  axt = &#039;Z-Only&#039;&lt;br /&gt;
               if (kz.lt.0 .or. kx.lt.0)  axt = &#039;Bisector&#039;&lt;br /&gt;
               if (kx.lt.0 .and. ky.lt.0)  axt = &#039;Z-Bisect&#039;&lt;br /&gt;
               if (max(kz,kx,ky) .lt. 0)  axt = &#039;3-Fold&#039;&lt;br /&gt;
&lt;br /&gt;
You can convert the atomic multipoles from one frame to another (your choice) using poledit.x&lt;br /&gt;
&lt;br /&gt;
Some notes about local frames here: [[Tutorials:localframe|AMOEBA Multipole Local Frames]]&lt;br /&gt;
&lt;br /&gt;
[[File:Localframe.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Spherical multipoles  ==&lt;br /&gt;
&lt;br /&gt;
Multipole can also be obtained by expanding in Legendre polynomial, instead of Taylor expansion. The potential due to a point charge can be expanded: &lt;br /&gt;
[[File:Smp.png|thumb|Spherical multipoles]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Phi (r, \theta ) \propto \frac{1}{R} = \frac{1}{\sqrt{r^{2} + a^{2} - 2ar \cos\theta}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If r &amp;amp;gt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{a}{r} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
if r &amp;amp;lt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{r}{a} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The same conclusion can be arrived at by solving the electric potential according to Laplace equation, &amp;lt;math&amp;gt;\nabla^2 \Phi(\mathbf{x})=0&amp;lt;/math&amp;gt;, by separation of variables. The solution takes the form of &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(r,\theta)=\sum_{\ell=0}^{\infty} \left[ A_\ell r^\ell + B_\ell r^{-(\ell+1)} \right] P_\ell(\cos\theta).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B_\ell&amp;lt;/math&amp;gt; depend on the boundary conditions - Jackson, J.D. &#039;&#039;Classical Electrodynamics&#039;&#039;, 3rd edition, Wiley &amp;amp;amp; Sons, 1999. page 103&lt;br /&gt;
&lt;br /&gt;
 A more detailed derivation of potential in spherical form for a point charge embedded in a dielectric sphere &lt;br /&gt;
 can be found in &amp;lt;ref&amp;gt; Cai et al. Extending the fast multipole method to charges inside or outside a dielectric sphere, Journal of Computational Physics 223 (2007) 846–864 2007&amp;lt;/ref&amp;gt; When the dielectric inside and outside the sphere &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ε = 1&amp;lt;/span&amp;gt;, the equation reduce to gas-phase potential. &lt;br /&gt;
 [[:File:Cai-jcp-2006.pdf|click]] for pdf&lt;br /&gt;
&lt;br /&gt;
You may see the potential expressed in the spherical harmonics or associated Legendre. The Legendre polynomial can be expressed in associated Legendre polynomial according to the addition theorem (&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;cos(θ&#039; − θ) = cosθ&#039;cosθ + sinθsinθ&#039;&amp;lt;/span&amp;gt;) &lt;br /&gt;
&lt;br /&gt;
Consider two unit vectors &#039;&#039;&#039;x&#039;&#039;&#039; and &#039;&#039;&#039;y&#039;&#039;&#039;, having spherical coordinates (θ,φ) and (θ′,φ′), respectively. The addition theorem states &amp;lt;math&amp;gt;P_\ell( \mathbf{x}\cdot\mathbf{y} ) = \frac{4\pi}{2\ell+1}\sum_{m=-\ell}^\ell Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \, Y_{\ell m}(\theta,\varphi). &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;P&#039;&#039;&amp;lt;sub&amp;gt;ℓ&amp;lt;/sub&amp;gt; is the Legendre of order ℓ. This expression is valid for both real and complex harmonics.This is valid for any orthonormal basis of spherical harmonics of degree ℓ. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The spherical harmonics &amp;lt;math&amp;gt; Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \,&amp;lt;/math&amp;gt;(angular portion of a set of solutions to Laplace&#039;s equation) are related to the associated Legendre polynomial: &amp;lt;math&amp;gt; Y_\ell^m( \theta , \varphi ) = \sqrt{{(2\ell+1)\over 4\pi}{(\ell-m)!\over (\ell+m)!}}  \, P_\ell^m ( \cos{\theta} ) \, e^{i m \varphi } &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Further reading: http://en.wikipedia.org/wiki/Spherical_harmonics&lt;br /&gt;
&lt;br /&gt;
== Why use higher order moments at atoms  ==&lt;br /&gt;
&lt;br /&gt;
Example I: Using atomic partial charge only is inadequate to give an accurate representation of electrostatic potential. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;500&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;&#039;&#039;&#039;Electrostatic Potential by Atomic Multipoles&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; | &amp;lt;br&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &#039;&#039;&#039;&#039;&#039;Relative Error (%)&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Molecule&#039;&#039;&#039;&#039;&#039;&amp;lt;b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole Only&#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole+Dipole&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;M+D+Q&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methane&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 13.53&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.04&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.39&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Water&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.44&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.88&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Ammonia&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 9.90&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 2.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methanol&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.35&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Acetylene&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 1.34&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.06&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Formamide&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.68&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.65&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methyl Acetate&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 6.03&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.67&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | DiMe Amine&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 16.27&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.48&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | NMA&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.26&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.30&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example II: HBond confiiguration &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole hbond ex.png|center|600x500px]] &lt;br /&gt;
&lt;br /&gt;
== How to derive permanent multipoles  ==&lt;br /&gt;
&lt;br /&gt;
=== DMA ===&lt;br /&gt;
&lt;br /&gt;
Distributed Multipole Analysis allows to derive atomic multipoles from ab initio calculations. &lt;br /&gt;
&lt;br /&gt;
Original DMA is described in &amp;lt;ref&amp;gt; A.J. Stone, Chem. Phys. Lett. 83 (1981) 233&amp;lt;/ref&amp;gt; and &amp;lt;ref&amp;gt;A.J. Stone, M. Alderton, Mol. Phys. 56 (1985) 1047&amp;lt;/ref&amp;gt;. The original DMA (explained in Estar manual below) works well for small molecule without diffuse function in the basis set. Stone improved the basis set dependence of DMA values, using a grid based quadrature for partitioning the contributions to the charge density from diffuse basis functions. &amp;lt;ref&amp;gt; Anthony J. Stone J. Chem. Theory Comput., 2005, 1 (6), pp 1128–1132 http://pubs.acs.org/doi/abs/10.1021/ct050190%2B &amp;lt;/ref&amp;gt; The DMA from this new procedure however is not as transferable as the original one among conformations. &lt;br /&gt;
&lt;br /&gt;
In Stone&#039;s latest GDMA program v2.2, the original DMA procedure is invoked by setting &amp;quot;switch=0&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Now we use the original DMA with a small basis set (MP2/6-311G**), and then &#039;&#039;&#039;optimize the DMA to higher level electrostatic potential on a grid&#039;&#039;&#039; (MP2/6/311++G2d,dp or aug-cc-pvtz) using &amp;quot;potential&amp;quot; program in TINKER. For flexible molecules, multiple conformations (e.g. local minima of alanine dipeptide) are used in the fitting. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Estar explains how DMA works:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar.png|500px]]&lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Cumulative Atomic Multipole Moments (CAMM) ===&lt;br /&gt;
&lt;br /&gt;
Explained above &lt;br /&gt;
&lt;br /&gt;
=== AIM (Bader) ===&lt;br /&gt;
&lt;br /&gt;
The theory of Atom In Molecule dissects molecules into atoms based on the topology of electron density. The main features are: &lt;br /&gt;
&lt;br /&gt;
*A molecule can be uniquely divided into a set of atomic volumes. These volumes are divided by a series of surfaces through which the gradient vector field of the electron density has no flux. Atomic properties such as atomic charge, dipole moment, and energies can be calculated by integrating their corresponding operators over the atomic volume. &lt;br /&gt;
*Two atoms are bonded if their atomic volumes share a common interatomic surface, and there is a (3, −1) critical point on this surface. A critical point is defined as a point in space where the gradient is zero. A (3, −1) critical point is defined as a critical point at which two of the eigenvalues of the Hessian matrix at the critical point are negative, while the other eigenvalue is positive. In other words, a bonding critical point is a first-order saddle point in the electron density scalar field. A bond path is the line along which the electron density is a maximum with respect to a neighboring line. Along the associated virial path the potential energy is maximally stabilizing. &lt;br /&gt;
*The interatomic bonds are classified as either closed shell or shared, if the Laplacian of the electron density at the critical point is positive or negative, respectively. &lt;br /&gt;
*Geometric bond strain can be gauged by examining the deviation of the bonding critical point from the interatomic axis between the two atoms. A large deviation implies larger bond strain.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Reading and software:&#039;&#039;&#039; &lt;br /&gt;
 http://www.chemistry.mcmaster.ca/bader/aim/ &lt;br /&gt;
 http://en.wikipedia.org/wiki/Atoms_in_molecules&lt;br /&gt;
&lt;br /&gt;
== Multipole interaction energy ==&lt;br /&gt;
&lt;br /&gt;
In the Cartesian Polytensor formalism,Applequist, J.,Journal of Mathematical Physics, 24 736-741 (1983), Applequist, J. Phys. A: Math. Gen. 22 (1989) 4303-4330.  Yong Kong, Multipole Electrostatic Methods for Protein Modeling with Reaction Field Treatment, Molecular Biophysics Program, Washington University, St. Louis, August 1997 http://dasher.wustl.edu/ponder/papers/kong-thesis.pdf the interaction energy between atoms i and j separated by rji is represented as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)=M_{i}^{T}{{T}_{ij}}{{M}_{j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 Mike Kong&#039;s thesis is a well written source for understanding these formula. &lt;br /&gt;
 PDF is available in the references at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
or in expanded form as &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole interaction.png|550px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)={{\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{i}}  \\&lt;br /&gt;
   {{\mu }_{ix}}  \\&lt;br /&gt;
   {{\mu }_{iy}}  \\&lt;br /&gt;
   {{\mu }_{iz}}  \\&lt;br /&gt;
   {{Q}_{ixx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]}^{t}}\left[ \begin{matrix}&lt;br /&gt;
   1 &amp;amp; \frac{\partial }{\partial {{x}_{j}}} &amp;amp; \frac{\partial }{\partial {{y}_{j}}} &amp;amp; \frac{\partial }{\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{x}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{y}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{z}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \ddots   \\&lt;br /&gt;
\end{matrix} \right]\left( \frac{1}{{{r}_{ji}}} \right)\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{j}}  \\&lt;br /&gt;
   {{\mu }_{jx}}  \\&lt;br /&gt;
   {{\mu }_{jy}}  \\&lt;br /&gt;
   {{\mu }_{jz}}  \\&lt;br /&gt;
   {{Q}_{jxx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note the multipoles above are in global frame. The multipoles are defined in local frame in the parameter files. At every energy and force evaluation, the multipoles are rotated from local frame to the global frame. &amp;lt;math&amp;gt;{{M}_{local}}={{\Re }^{-1}}M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For TINKER implementation of Ewald summation of multipole interaction energy, force, and torque see this paper (see Smith CCP5 paper) &lt;br /&gt;
&lt;br /&gt;
[[File:Smith-ccp5.pdf| 300px]]&lt;br /&gt;
&lt;br /&gt;
== Polarization effect ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cation - pi interaction&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Cation-pi.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water cluster association energy &#039;&#039;&#039;&amp;lt;ref&amp;gt; Ren and Ponder 2003 JPC B&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cluster.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water-Chloride binding enthalpy&#039;&#039;&#039;&amp;lt;ref&amp;gt;Grossfield, Ren and Ponder 2003 JACS&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cl.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Selected pages from Stone book on SAPT, distributed polarizabilities.&lt;br /&gt;
&lt;br /&gt;
[[file:Stone-SAPT-Polarizability.pdf | 500px ]]&lt;br /&gt;
&lt;br /&gt;
== Induced dipole ==&lt;br /&gt;
&lt;br /&gt;
Interactive polarizability model: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {{\mu }_{i}}={{\alpha }_{i}}\left( \sum_{j\ne i}{T_{ij}^{1}{{M}_{j}}}+\sum_{k\ne i}{T_{ik}^{11}{{\mu }_{k}}} \right) &amp;lt;/math&amp;gt; and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E \,&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
 1/2 is a result of balance between energy cost of creating induced dipoles and energy gain from induced dipole interactions &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;T_{ij}^{1}=\left[ {{\nabla }^{1}},{{\nabla }^{2}},{{\nabla }^{3}},... \right]&amp;lt;/math&amp;gt; is a 3 × 13 matrix with &amp;lt;math&amp;gt;{{\nabla }^{l+m+n}}=\frac{{{\partial }^{l}}}{\partial {{x}^{l}}}\frac{{{\partial }^{m}}}{\partial {{y}^{m}}}\frac{{{\partial }^{n}}}{\partial {{z}^{n}}}&amp;lt;/math&amp;gt; representing the second through fourth rows of the matrix T. &amp;lt;math&amp;gt;T_{ik}^{11}=\nabla _{ik}^{2}&amp;lt;/math&amp;gt; a 3×3 sub matrix, consists of elements in corresponding to the dipole moments. The atomic polarizability is isotropic. The off-diagonal elements the tensor, αi , are all zero and a single value for all three diagonal elements. Note that the effect of any permanent field on the induced dipole is additive. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Iterative solution with successive over-relaxation (SOR). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _{i}^{{}}(n+1)=(1-\omega )\mu _{i}^{{}}(n)\,\,+\,\,\omega \,\,\left[ \mu _{i}^{{}}(0)+{{\alpha }_{i}}\sum_{\{k\}}{T_{ik}^{11}\,\mu _{k}^{{}}(n)} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ω&amp;lt;/span&amp;gt; needs to be bigger than 0,5, typically 0.7. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;α&amp;lt;/span&amp;gt; is the atomic isotropic polarizability. &lt;br /&gt;
&lt;br /&gt;
*Atomic polarizability is not a physical quantity but molecular polarizability is an observable. &lt;br /&gt;
*The key of an empirical polarizability model is to reproduce the (QM or experimental) molecular response. &lt;br /&gt;
*Interactive (Applequist) -- use small atomic polarizability; no damping &amp;lt;ref&amp;gt;Jon Applequist,* James R. Carl, and Kwok-Keung Fung Journal of the American Chemical Society / 94:9 / May 3, 1972, 2952-2960.   &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Applequist1972.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Applequist is the first to use distributed atomic polarizability, to empirically compute CD spectrum and other optical properties of peptides. &lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist1979.pdf | 200px]]&lt;br /&gt;
*He also proposed a model that combine induced dipole and charges together.&lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist-1993.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Additive model (Dykstra)-- requires each atom has a polarizability tensor&lt;br /&gt;
&lt;br /&gt;
 [[Image:Stout-jpca1998.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Interactive (Thole) -- use damping. Provide better anisotropy in molecular response than Applequist model.&lt;br /&gt;
&lt;br /&gt;
[[Image:Thole.pdf | 200px]] [[Image:Thole-revisit-1998.pdf | 200px]] &lt;br /&gt;
&lt;br /&gt;
*A good review that compares above by Dykstra &lt;br /&gt;
&lt;br /&gt;
[[Image:Dykstra-jms2001.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Induce damp.png|500px]] [[Image:Mpole damp.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About damping in polarization&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We use &amp;quot;damping&amp;quot; to modulate polarization strength and avoid polarization catastrophe (induced dipoles do not converge, go to infinity during self consistent iteration).&lt;br /&gt;
&lt;br /&gt;
Physically the damping is replacing point charge/multipoles with smeared distribution.&lt;br /&gt;
Mathematically the damping is  is multiplying Coulomb potential/field with exp function: 1/r - &amp;gt; (1-exp[a*u^3)...)/r) above&lt;br /&gt;
&lt;br /&gt;
The damping coefficient &amp;quot;a&amp;quot; goes into the exponent. smaller &amp;quot;a&amp;quot; means stronger damping.&lt;br /&gt;
&lt;br /&gt;
AMOEBA assign each atom a polarizability and a damping coeff &amp;quot;a&amp;quot;, 99% time a=0.39. See &amp;quot;Polarize xxx &amp;quot; in prm file&lt;br /&gt;
For some divalent ions, we used smaller than 0.39.&lt;br /&gt;
In Tinker energy and force calculations, when two atoms polarize each other and each has own/different &amp;quot;a&amp;quot;, we use the smaller one. So for the divalent ion -water (or anything else), the smaller &amp;quot;a&amp;quot; is used.&lt;br /&gt;
This is why most time, we do not use &amp;quot;a&amp;quot; &amp;gt; 0.39. If we do, only that atom interacting with its own type will use this bigger &amp;quot;a&amp;quot;, every other pair uses 0.39 or smaller.&lt;br /&gt;
&lt;br /&gt;
When you optimize &amp;quot;a&amp;quot; for lanthanides -water , try to keep &amp;quot;a&amp;quot; &amp;lt;= 0.39 . Bigger values has no effect (since water O and H have 0.39) and numerical gradient wrt to &amp;quot;a&amp;quot; will be broken&lt;br /&gt;
&lt;br /&gt;
== Polarization group and Intramolecular polarization ==&lt;br /&gt;
&lt;br /&gt;
Polarization occurs intramolecularly as well as intermolecularly. &amp;lt;ref name=&amp;quot;jcc2002&amp;quot;&amp;gt;Ren and Ponder J Comput Chem 23: 1497–1506, 2002 http://www3.interscience.wiley.com/journal/99017014/abstract?CRETRY=1&amp;amp;amp;SRETRY=0 &amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Polar group.png]] &lt;br /&gt;
&lt;br /&gt;
A large molecule can be divided into (functional) groups, the permanent multipoles will polarize each other like small molecules would do to each other. The multipole derived from ab initio calculations for the above molecule would however include the intramolecular polarization already. &lt;br /&gt;
&lt;br /&gt;
Starting from the ab initio atomic multipoles (DMA) for an arbitrary conformer of a model compound, , one can derive the intrinsic “permanent” atomic multipole moments (PAM), , that satisfy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{i}^{DMA}=M_{i}^{{}}+{{\mu }_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where μi is the dipole induced by intramolecular polarization of Mi. The Mi is obtained by an iterative procedure similiar to above. This approach provides a route to derive multipole parameters from larger model compounds with intramolecualr polarization. We have previously shown that the combination of one set of permanent {Mi} and conformation-dependent induced dipole{µi} moments is able to reproduce the QM electrostatic potential of flexible molecules at various conformations.&amp;lt;ref name=&amp;quot;jcc2002&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction Energy ==&lt;br /&gt;
&lt;br /&gt;
Recall &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E&amp;lt;/math&amp;gt; or in pairwise &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}\sum_{i}^{{}}{{{\left( \mu _{i}^{ind} \right)}^{T}}{{E}_{i}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\left( {{\alpha }^{-1}}-{{T}^{11}} \right){{\mu }^{ind}}={{T}^{1}}M=E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;C = \left( {\alpha}^{-1}-{T}^{11}\right)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Force and gradient ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;F_{x,i}=-\frac{\partial U^{ind}_{system}}{\partial x_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{sys}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\left( \frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{C}^{-1}}E+{{E}^{T}}\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}E+{{E}^{T}}{{C}^{-1}}\frac{\partial E}{\partial {{x}_{k}}} \right),\begin{matrix}&lt;br /&gt;
   {} &amp;amp; k=1,2,3  \\&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}C+{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}=0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{\mu }^{ind}}+\frac{1}{2}{{E}^{T}}{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}{{C}^{-1}}E-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial E}{\partial {{x}_{k}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Define &amp;lt;math&amp;gt;M^t=M^{perm} + M^{ind}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;=-{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{1}}M}{\partial {{x}_{k}}}-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{11}}}{\partial {{x}_{k}}}{{\mu }^{ind}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
The above is in addition to the permanent ele forces (second term is related to torque, which can be converted to forces on frame defining atoms).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{t}}{\partial {{x}_{k}}}=-\frac{1}{2}{{\left( {{M}^{t}} \right)}^{T}}\frac{\partial {{T}^{1}}}{\partial {{x}_{k}}}{{M}^{t}}-{{\left( {{M}^{t}} \right)}^{T}}{{T}^{1}}\frac{\partial \Re }{\partial {{x}_{k}}}{{M}^{{}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2135</id>
		<title>Ammm:Mm mpole</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Ammm:Mm_mpole&amp;diff=2135"/>
		<updated>2025-08-12T15:01:21Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Local frame definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is electrostatic important? ==&lt;br /&gt;
&lt;br /&gt;
All forces are electrostatic in nature.&lt;br /&gt;
&lt;br /&gt;
== Buckingham, Advances in Chemical Physics, 12, 107-142 (1967)  ==&lt;br /&gt;
&lt;br /&gt;
https://doi.org/10.1002/9780470143582.ch2&lt;br /&gt;
&lt;br /&gt;
There is now general agreement that the significant forces between atoms and molecules have an electric origin. It is true that other sources exist, such as magnetic and gravitational interactions, but these can normally be neglected. When the molecules are far apart and the separation is large compared to the dimensions of the~molecules, the interaction energy is determined by the permanent electric moments, and their interactions comprise the electrostatic energy. The permanent moments produce a field that distorts the electronic structures of neighboring molecules leading to an additional interaction, the induction energy.&lt;br /&gt;
&lt;br /&gt;
== point charges ==&lt;br /&gt;
&lt;br /&gt;
 Atomic charges are not physical observables. Molecular charges, electrostatic potential and field are.&lt;br /&gt;
&lt;br /&gt;
Nitrogen molecule: what would be the atomic charge? &lt;br /&gt;
&lt;br /&gt;
[[Image:N2multipole.png|Figure 1. ESP]]&lt;br /&gt;
&lt;br /&gt;
== Multipole expansion ==&lt;br /&gt;
&lt;br /&gt;
Ref: [https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion https://en.wikibooks.org/wiki/Mathematical_Methods_of_Physics/The_multipole_expansion]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{{M}_{i}}={{\left[ {{q}_{i}},{{d}_{ix}},{{d}_{iy}},{{d}_{iz}},{{Q}_{ixx}},{{Q}_{ixy}},{{Q}_{ixz}},{{Q}_{iyx}},{{Q}_{iyy}},{{Q}_{iyz}},{{Q}_{izx}},{{Q}_{izy}},{{Q}_{izz}} \right]}^{T}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*monopole, i.e. point charge or zeroth moment of charge distribution &lt;br /&gt;
*dipole, or first moment of the charge distribution &lt;br /&gt;
&lt;br /&gt;
    (-) -&amp;gt; (+) is a dipole vector&lt;br /&gt;
   A point dipole is adipole at the limit of separation approaches zero.&lt;br /&gt;
   carbon dioxide: 0 (Debye)&lt;br /&gt;
   carbon monoxide: 0.112&lt;br /&gt;
   water vapor: 1.85&lt;br /&gt;
   water in liquid: 2.8&lt;br /&gt;
   potassium bromide: 10.41&lt;br /&gt;
&lt;br /&gt;
*quadrupole, second moment&lt;br /&gt;
[[File:Quadrupole.png|quadrupole|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; The traceless Cartesian &#039;&#039;&#039;quadrupole moment tensor&#039;&#039;&#039; of a charge distribution&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\sum_n q_n(3x_i x_j-r^2\delta_{ij})\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
or in tensor form: &lt;br /&gt;
[[File:Quadtensor.png|none|thumb|quadrupole tensor]]&lt;br /&gt;
[[File:Qtensor.png|none|thumb|Traceless q tensor]]&lt;br /&gt;
&lt;br /&gt;
for a discrete system with individual charges &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;q&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;n&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;, or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Q_{ij}=1/2\int\, \rho(x)(3x_i x_j-r^2\delta_{ij})\, d^3x\ ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
for a continuous system with charge density &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ρ(&#039;&#039;x&#039;&#039;)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Cartesian multipole expansion of a charge distribution: &lt;br /&gt;
[[File:DMA.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Local frame definition ==&lt;br /&gt;
Mode detailed tutorials on local frames: https://biomolmd.org/mw/index.php/Tutorials:localframe &lt;br /&gt;
Vector and tensor values depend on the specific frames used. &lt;br /&gt;
&lt;br /&gt;
In amoeba.prm, water multipole values are defined for O (type 22) and H (23) atoms: &lt;br /&gt;
&lt;br /&gt;
 multipole    22   23  -23             -0.51966&lt;br /&gt;
                                      0.00000    0.00000    0.14279&lt;br /&gt;
                                      0.37928&lt;br /&gt;
                                      0.00000   -0.41809&lt;br /&gt;
                                      0.00000    0.00000    0.03881&lt;br /&gt;
 multipole    23   22   23              0.25983&lt;br /&gt;
                                     -0.03859    0.00000   -0.05818&lt;br /&gt;
                                     -0.03673&lt;br /&gt;
                                      0.00000   -0.10739&lt;br /&gt;
                                     -0.00203    0.00000    0.14412&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Types of frames:&lt;br /&gt;
* Z-then-X is the most common.&lt;br /&gt;
* Bisector for atoms like O in H2O. Note this requires dx=dy=0, Qxy=Qyz=0&lt;br /&gt;
* z-then-bisector is used for N in methyl amine, where Z is C and H-N-H bisector is used to define X. Note that it is necessary that dy=0, Qxy=Qyz=0&lt;br /&gt;
* z only (22 0 0) can be used for N in N2. In this case, the atom will have dx=dy=0, Qxx=Qyy=-1/2Qzz (traceless), and Qxy=Qyz=Qxz=0&lt;br /&gt;
&lt;br /&gt;
 For example, the C in methanol, you can use Z only:&lt;br /&gt;
 C_AT  0  0 &lt;br /&gt;
 Or you can use z-then-x:&lt;br /&gt;
 xxx  O_AT  HO_AT&lt;br /&gt;
 where HO_AT is the hydroxyl hydrogen atom type. So atoms that not immediately connected is also allowed!&lt;br /&gt;
&lt;br /&gt;
 Many examples can be found in tinker/param/amoeba09.prm&lt;br /&gt;
&lt;br /&gt;
In kmpole.f, you can find how tinker decide which frame is used by checking the sign and how many frame defining atoms there are:&lt;br /&gt;
               #type   kz_type    kx_type   ky_type_if_needed&lt;br /&gt;
               if (kz.ne.0 .and. kx.eq.0)  axt = &#039;Z-Only&#039;&lt;br /&gt;
               if (kz.lt.0 .or. kx.lt.0)  axt = &#039;Bisector&#039;&lt;br /&gt;
               if (kx.lt.0 .and. ky.lt.0)  axt = &#039;Z-Bisect&#039;&lt;br /&gt;
               if (max(kz,kx,ky) .lt. 0)  axt = &#039;3-Fold&#039;&lt;br /&gt;
&lt;br /&gt;
You can convert the atomic multipoles from one frame to another (your choice) using poledit.x&lt;br /&gt;
&lt;br /&gt;
Some notes about local frames here: [[Tutorials:localframe|AMOEBA Multipole Local Frames]]&lt;br /&gt;
&lt;br /&gt;
[[File:Localframe.png|frameless|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Spherical multipoles  ==&lt;br /&gt;
&lt;br /&gt;
Multipole can also be obtained by expanding in Legendre polynomial, instead of Taylor expansion. The potential due to a point charge can be expanded: &lt;br /&gt;
[[File:Smp.png|thumb|Spherical multipoles]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Phi (r, \theta ) \propto \frac{1}{R} = \frac{1}{\sqrt{r^{2} + a^{2} - 2ar \cos\theta}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If r &amp;amp;gt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{a}{r} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
if r &amp;amp;lt; a&amp;amp;nbsp;:&amp;lt;math&amp;gt;\Phi(r, \theta) \propto&lt;br /&gt;
\frac{1}{r} \sum_{k=0}^{\infty} \left( \frac{r}{a} \right)^{k} &lt;br /&gt;
P_{k}(\cos \theta)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The same conclusion can be arrived at by solving the electric potential according to Laplace equation, &amp;lt;math&amp;gt;\nabla^2 \Phi(\mathbf{x})=0&amp;lt;/math&amp;gt;, by separation of variables. The solution takes the form of &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(r,\theta)=\sum_{\ell=0}^{\infty} \left[ A_\ell r^\ell + B_\ell r^{-(\ell+1)} \right] P_\ell(\cos\theta).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_\ell&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B_\ell&amp;lt;/math&amp;gt; depend on the boundary conditions - Jackson, J.D. &#039;&#039;Classical Electrodynamics&#039;&#039;, 3rd edition, Wiley &amp;amp;amp; Sons, 1999. page 103&lt;br /&gt;
&lt;br /&gt;
 A more detailed derivation of potential in spherical form for a point charge embedded in a dielectric sphere &lt;br /&gt;
 can be found in &amp;lt;ref&amp;gt; Cai et al. Extending the fast multipole method to charges inside or outside a dielectric sphere, Journal of Computational Physics 223 (2007) 846–864 2007&amp;lt;/ref&amp;gt; When the dielectric inside and outside the sphere &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ε = 1&amp;lt;/span&amp;gt;, the equation reduce to gas-phase potential. &lt;br /&gt;
 [[:File:Cai-jcp-2006.pdf|click]] for pdf&lt;br /&gt;
&lt;br /&gt;
You may see the potential expressed in the spherical harmonics or associated Legendre. The Legendre polynomial can be expressed in associated Legendre polynomial according to the addition theorem (&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;cos(θ&#039; − θ) = cosθ&#039;cosθ + sinθsinθ&#039;&amp;lt;/span&amp;gt;) &lt;br /&gt;
&lt;br /&gt;
Consider two unit vectors &#039;&#039;&#039;x&#039;&#039;&#039; and &#039;&#039;&#039;y&#039;&#039;&#039;, having spherical coordinates (θ,φ) and (θ′,φ′), respectively. The addition theorem states &amp;lt;math&amp;gt;P_\ell( \mathbf{x}\cdot\mathbf{y} ) = \frac{4\pi}{2\ell+1}\sum_{m=-\ell}^\ell Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \, Y_{\ell m}(\theta,\varphi). &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;P&#039;&#039;&amp;lt;sub&amp;gt;ℓ&amp;lt;/sub&amp;gt; is the Legendre of order ℓ. This expression is valid for both real and complex harmonics.This is valid for any orthonormal basis of spherical harmonics of degree ℓ. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The spherical harmonics &amp;lt;math&amp;gt; Y_{\ell m}^*(\theta&#039;,\varphi&#039;) \,&amp;lt;/math&amp;gt;(angular portion of a set of solutions to Laplace&#039;s equation) are related to the associated Legendre polynomial: &amp;lt;math&amp;gt; Y_\ell^m( \theta , \varphi ) = \sqrt{{(2\ell+1)\over 4\pi}{(\ell-m)!\over (\ell+m)!}}  \, P_\ell^m ( \cos{\theta} ) \, e^{i m \varphi } &amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Further reading: http://en.wikipedia.org/wiki/Spherical_harmonics&lt;br /&gt;
&lt;br /&gt;
== Why use higher order moments at atoms  ==&lt;br /&gt;
&lt;br /&gt;
Example I: Using atomic partial charge only is inadequate to give an accurate representation of electrostatic potential. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;500&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;&#039;&#039;&#039;Electrostatic Potential by Atomic Multipoles&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; | &amp;lt;br&amp;gt; &lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &#039;&#039;&#039;&#039;&#039;Relative Error (%)&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Molecule&#039;&#039;&#039;&#039;&#039;&amp;lt;b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole Only&#039;&#039;&#039;&amp;lt;br&amp;gt;&#039;&#039; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;Monopole+Dipole&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;&#039;&#039;M+D+Q&#039;&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methane&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 13.53&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.04&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.39&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Water&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.44&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.88&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Ammonia&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 9.90&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 2.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methanol&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 8.35&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.31&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Acetylene&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 1.34&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.06&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Formamide&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.68&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.65&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | Methyl Acetate&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 6.03&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.67&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.02&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | DiMe Amine&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 16.27&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 1.48&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.03&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | NMA&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;138&amp;quot; align=&amp;quot;center&amp;quot; | 3.26&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.30&amp;lt;br&amp;gt; &lt;br /&gt;
| width=&amp;quot;128&amp;quot; align=&amp;quot;center&amp;quot; | 0.01&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example II: HBond confiiguration &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole hbond ex.png|center|600x500px]] &lt;br /&gt;
&lt;br /&gt;
== How to derive permanent multipoles  ==&lt;br /&gt;
&lt;br /&gt;
=== DMA ===&lt;br /&gt;
&lt;br /&gt;
Distributed Multipole Analysis allows to derive atomic multipoles from ab initio calculations. &lt;br /&gt;
&lt;br /&gt;
Original DMA is described in &amp;lt;ref&amp;gt; A.J. Stone, Chem. Phys. Lett. 83 (1981) 233&amp;lt;/ref&amp;gt; and &amp;lt;ref&amp;gt;A.J. Stone, M. Alderton, Mol. Phys. 56 (1985) 1047&amp;lt;/ref&amp;gt;. The original DMA (explained in Estar manual below) works well for small molecule without diffuse function in the basis set. Stone improved the basis set dependence of DMA values, using a grid based quadrature for partitioning the contributions to the charge density from diffuse basis functions. &amp;lt;ref&amp;gt; Anthony J. Stone J. Chem. Theory Comput., 2005, 1 (6), pp 1128–1132 http://pubs.acs.org/doi/abs/10.1021/ct050190%2B &amp;lt;/ref&amp;gt; The DMA from this new procedure however is not as transferable as the original one among conformations. &lt;br /&gt;
&lt;br /&gt;
In Stone&#039;s latest GDMA program v2.2, the original DMA procedure is invoked by setting &amp;quot;switch=0&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Now we use the original DMA with a small basis set (MP2/6-311G**), and then &#039;&#039;&#039;optimize the DMA to higher level electrostatic potential on a grid&#039;&#039;&#039; (MP2/6/311++G2d,dp or aug-cc-pvtz) using &amp;quot;potential&amp;quot; program in TINKER. For flexible molecules, multiple conformations (e.g. local minima of alanine dipeptide) are used in the fitting. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Estar explains how DMA works:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar.png|500px]]&lt;br /&gt;
&lt;br /&gt;
 [[Image:Dma-estar2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Cumulative Atomic Multipole Moments (CAMM) ===&lt;br /&gt;
&lt;br /&gt;
Explained above &lt;br /&gt;
&lt;br /&gt;
=== AIM (Bader) ===&lt;br /&gt;
&lt;br /&gt;
The theory of Atom In Molecule dissects molecules into atoms based on the topology of electron density. The main features are: &lt;br /&gt;
&lt;br /&gt;
*A molecule can be uniquely divided into a set of atomic volumes. These volumes are divided by a series of surfaces through which the gradient vector field of the electron density has no flux. Atomic properties such as atomic charge, dipole moment, and energies can be calculated by integrating their corresponding operators over the atomic volume. &lt;br /&gt;
*Two atoms are bonded if their atomic volumes share a common interatomic surface, and there is a (3, −1) critical point on this surface. A critical point is defined as a point in space where the gradient is zero. A (3, −1) critical point is defined as a critical point at which two of the eigenvalues of the Hessian matrix at the critical point are negative, while the other eigenvalue is positive. In other words, a bonding critical point is a first-order saddle point in the electron density scalar field. A bond path is the line along which the electron density is a maximum with respect to a neighboring line. Along the associated virial path the potential energy is maximally stabilizing. &lt;br /&gt;
*The interatomic bonds are classified as either closed shell or shared, if the Laplacian of the electron density at the critical point is positive or negative, respectively. &lt;br /&gt;
*Geometric bond strain can be gauged by examining the deviation of the bonding critical point from the interatomic axis between the two atoms. A large deviation implies larger bond strain.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Reading and software:&#039;&#039;&#039; &lt;br /&gt;
 http://www.chemistry.mcmaster.ca/bader/aim/ &lt;br /&gt;
 http://en.wikipedia.org/wiki/Atoms_in_molecules&lt;br /&gt;
&lt;br /&gt;
== Multipole interaction energy ==&lt;br /&gt;
&lt;br /&gt;
In the Cartesian Polytensor formalism,Applequist, J.,Journal of Mathematical Physics, 24 736-741 (1983), Applequist, J. Phys. A: Math. Gen. 22 (1989) 4303-4330.  Yong Kong, Multipole Electrostatic Methods for Protein Modeling with Reaction Field Treatment, Molecular Biophysics Program, Washington University, St. Louis, August 1997 http://dasher.wustl.edu/ponder/papers/kong-thesis.pdf the interaction energy between atoms i and j separated by rji is represented as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)=M_{i}^{T}{{T}_{ij}}{{M}_{j}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 Mike Kong&#039;s thesis is a well written source for understanding these formula. &lt;br /&gt;
 PDF is available in the references at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
or in expanded form as &lt;br /&gt;
&lt;br /&gt;
[[Image:Mpole interaction.png|550px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ele}^{perm}(ij)={{\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{i}}  \\&lt;br /&gt;
   {{\mu }_{ix}}  \\&lt;br /&gt;
   {{\mu }_{iy}}  \\&lt;br /&gt;
   {{\mu }_{iz}}  \\&lt;br /&gt;
   {{Q}_{ixx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]}^{t}}\left[ \begin{matrix}&lt;br /&gt;
   1 &amp;amp; \frac{\partial }{\partial {{x}_{j}}} &amp;amp; \frac{\partial }{\partial {{y}_{j}}} &amp;amp; \frac{\partial }{\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{x}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{x}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{y}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{y}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \frac{\partial }{\partial {{z}_{i}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{x}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{y}_{j}}} &amp;amp; \frac{{{\partial }^{2}}}{\partial {{z}_{i}}\partial {{z}_{j}}} &amp;amp; \cdots   \\&lt;br /&gt;
   \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \vdots  &amp;amp; \ddots   \\&lt;br /&gt;
\end{matrix} \right]\left( \frac{1}{{{r}_{ji}}} \right)\left[ \begin{matrix}&lt;br /&gt;
   {{q}_{j}}  \\&lt;br /&gt;
   {{\mu }_{jx}}  \\&lt;br /&gt;
   {{\mu }_{jy}}  \\&lt;br /&gt;
   {{\mu }_{jz}}  \\&lt;br /&gt;
   {{Q}_{jxx}}  \\&lt;br /&gt;
   \vdots   \\&lt;br /&gt;
\end{matrix} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note the multipoles above are in global frame. The multipoles are defined in local frame in the parameter files. At every energy and force evaluation, the multipoles are rotated from local frame to the global frame. &amp;lt;math&amp;gt;{{M}_{local}}={{\Re }^{-1}}M&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For TINKER implementation of Ewald summation of multipole interaction energy, force, and torque see this paper (see Smith CCP5 paper) &lt;br /&gt;
&lt;br /&gt;
[[File:Smith-ccp5.pdf| 300px]]&lt;br /&gt;
&lt;br /&gt;
== Polarization effect ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cation - pi interaction&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Cation-pi.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water cluster association energy &#039;&#039;&#039;&amp;lt;ref&amp;gt; Ren and Ponder 2003 JPC B&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cluster.png|500px]] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Water-Chloride binding enthalpy&#039;&#039;&#039;&amp;lt;ref&amp;gt;Grossfield, Ren and Ponder 2003 JACS&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Water-cl.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Selected pages from Stone book on SAPT, distributed polarizabilities.&lt;br /&gt;
&lt;br /&gt;
[[file:Stone-SAPT-Polarizability.pdf | 500px ]]&lt;br /&gt;
&lt;br /&gt;
== Induced dipole ==&lt;br /&gt;
&lt;br /&gt;
Interactive polarizability model: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; {{\mu }_{i}}={{\alpha }_{i}}\left( \sum_{j\ne i}{T_{ij}^{1}{{M}_{j}}}+\sum_{k\ne i}{T_{ik}^{11}{{\mu }_{k}}} \right) &amp;lt;/math&amp;gt; and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E \,&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
 1/2 is a result of balance between energy cost of creating induced dipoles and energy gain from induced dipole interactions &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;T_{ij}^{1}=\left[ {{\nabla }^{1}},{{\nabla }^{2}},{{\nabla }^{3}},... \right]&amp;lt;/math&amp;gt; is a 3 × 13 matrix with &amp;lt;math&amp;gt;{{\nabla }^{l+m+n}}=\frac{{{\partial }^{l}}}{\partial {{x}^{l}}}\frac{{{\partial }^{m}}}{\partial {{y}^{m}}}\frac{{{\partial }^{n}}}{\partial {{z}^{n}}}&amp;lt;/math&amp;gt; representing the second through fourth rows of the matrix T. &amp;lt;math&amp;gt;T_{ik}^{11}=\nabla _{ik}^{2}&amp;lt;/math&amp;gt; a 3×3 sub matrix, consists of elements in corresponding to the dipole moments. The atomic polarizability is isotropic. The off-diagonal elements the tensor, αi , are all zero and a single value for all three diagonal elements. Note that the effect of any permanent field on the induced dipole is additive. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Iterative solution with successive over-relaxation (SOR). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu _{i}^{{}}(n+1)=(1-\omega )\mu _{i}^{{}}(n)\,\,+\,\,\omega \,\,\left[ \mu _{i}^{{}}(0)+{{\alpha }_{i}}\sum_{\{k\}}{T_{ik}^{11}\,\mu _{k}^{{}}(n)} \right]&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;ω&amp;lt;/span&amp;gt; needs to be bigger than 0,5, typically 0.7. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;α&amp;lt;/span&amp;gt; is the atomic isotropic polarizability. &lt;br /&gt;
&lt;br /&gt;
*Atomic polarizability is not a physical quantity but molecular polarizability is an observable. &lt;br /&gt;
*The key of an empirical polarizability model is to reproduce the (QM or experimental) molecular response. &lt;br /&gt;
*Interactive (Applequist) -- use small atomic polarizability; no damping &amp;lt;ref&amp;gt;Jon Applequist,* James R. Carl, and Kwok-Keung Fung Journal of the American Chemical Society / 94:9 / May 3, 1972, 2952-2960.   &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Applequist1972.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Applequist is the first to use distributed atomic polarizability, to empirically compute CD spectrum and other optical properties of peptides. &lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist1979.pdf | 200px]]&lt;br /&gt;
*He also proposed a model that combine induced dipole and charges together.&lt;br /&gt;
&lt;br /&gt;
[[Image:Applequist-1993.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Additive model (Dykstra)-- requires each atom has a polarizability tensor&lt;br /&gt;
&lt;br /&gt;
 [[Image:Stout-jpca1998.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
*Interactive (Thole) -- use damping. Provide better anisotropy in molecular response than Applequist model.&lt;br /&gt;
&lt;br /&gt;
[[Image:Thole.pdf | 200px]] [[Image:Thole-revisit-1998.pdf | 200px]] &lt;br /&gt;
&lt;br /&gt;
*A good review that compares above by Dykstra &lt;br /&gt;
&lt;br /&gt;
[[Image:Dykstra-jms2001.pdf | 200px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Induce damp.png|500px]] [[Image:Mpole damp.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About damping in polarization&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We use &amp;quot;damping&amp;quot; to modulate polarization strength and avoid polarization catastrophe (induced dipoles do not converge, go to infinity during self consistent iteration).&lt;br /&gt;
&lt;br /&gt;
Physically the damping is replacing point charge/multipoles with smeared distribution.&lt;br /&gt;
Mathematically the damping is  is multiplying Coulomb potential/field with exp function: 1/r - &amp;gt; (1-exp[a*u^3)...)/r) above&lt;br /&gt;
&lt;br /&gt;
The damping coefficient &amp;quot;a&amp;quot; goes into the exponent. smaller &amp;quot;a&amp;quot; means stronger damping.&lt;br /&gt;
&lt;br /&gt;
AMOEBA assign each atom a polarizability and a damping coeff &amp;quot;a&amp;quot;, 99% time a=0.39. See &amp;quot;Polarize xxx &amp;quot; in prm file&lt;br /&gt;
For some divalent ions, we used smaller than 0.39.&lt;br /&gt;
In Tinker energy and force calculations, when two atoms polarize each other and each has own/different &amp;quot;a&amp;quot;, we use the smaller one. So for the divalent ion -water (or anything else), the smaller &amp;quot;a&amp;quot; is used.&lt;br /&gt;
This is why most time, we do not use &amp;quot;a&amp;quot; &amp;gt; 0.39. If we do, only that atom interacting with its own type will use this bigger &amp;quot;a&amp;quot;, every other pair uses 0.39 or smaller.&lt;br /&gt;
&lt;br /&gt;
When you optimize &amp;quot;a&amp;quot; for lanthanides -water , try to keep &amp;quot;a&amp;quot; &amp;lt;= 0.39 . Bigger values has no effect (since water O and H have 0.39) and numerical gradient wrt to &amp;quot;a&amp;quot; will be broken&lt;br /&gt;
&lt;br /&gt;
== Polarization group and Intramolecular polarization ==&lt;br /&gt;
&lt;br /&gt;
Polarization occurs intramolecularly as well as intermolecularly. &amp;lt;ref name=&amp;quot;jcc2002&amp;quot;&amp;gt;Ren and Ponder J Comput Chem 23: 1497–1506, 2002 http://www3.interscience.wiley.com/journal/99017014/abstract?CRETRY=1&amp;amp;amp;SRETRY=0 &amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Polar group.png]] &lt;br /&gt;
&lt;br /&gt;
A large molecule can be divided into (functional) groups, the permanent multipoles will polarize each other like small molecules would do to each other. The multipole derived from ab initio calculations for the above molecule would however include the intramolecular polarization already. &lt;br /&gt;
&lt;br /&gt;
Starting from the ab initio atomic multipoles (DMA) for an arbitrary conformer of a model compound, , one can derive the intrinsic “permanent” atomic multipole moments (PAM), , that satisfy &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{i}^{DMA}=M_{i}^{{}}+{{\mu }_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where μi is the dipole induced by intramolecular polarization of Mi. The Mi is obtained by an iterative procedure similiar to above. This approach provides a route to derive multipole parameters from larger model compounds with intramolecualr polarization. We have previously shown that the combination of one set of permanent {Mi} and conformation-dependent induced dipole{µi} moments is able to reproduce the QM electrostatic potential of flexible molecules at various conformations.&amp;lt;ref name=&amp;quot;jcc2002&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Induction Energy ==&lt;br /&gt;
&lt;br /&gt;
Recall &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E&amp;lt;/math&amp;gt; or in pairwise &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}\sum_{i}^{{}}{{{\left( \mu _{i}^{ind} \right)}^{T}}{{E}_{i}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E \,&amp;lt;/math&amp;gt; is the permanent field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\left( {{\alpha }^{-1}}-{{T}^{11}} \right){{\mu }^{ind}}={{T}^{1}}M=E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;C = \left( {\alpha}^{-1}-{T}^{11}\right)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{ele}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Force and gradient ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;F_{x,i}=-\frac{\partial U^{ind}_{system}}{\partial x_{i}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;U_{sys}^{ind}=-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}E=-\frac{1}{2}{{E}^{T}}{{C}^{-1}}E&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\left( \frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{C}^{-1}}E+{{E}^{T}}\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}E+{{E}^{T}}{{C}^{-1}}\frac{\partial E}{\partial {{x}_{k}}} \right),\begin{matrix}&lt;br /&gt;
   {} &amp;amp; k=1,2,3  \\&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial {{C}^{-1}}}{\partial {{x}_{k}}}C+{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}=0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{ind}}{\partial {{x}_{k}}}=-\frac{1}{2}\frac{\partial {{E}^{T}}}{\partial {{x}_{k}}}{{\mu }^{ind}}+\frac{1}{2}{{E}^{T}}{{C}^{-1}}\frac{\partial C}{\partial {{x}_{k}}}{{C}^{-1}}E-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial E}{\partial {{x}_{k}}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Define &amp;lt;math&amp;gt;M^t=M^{perm} + M^{ind}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;=-{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{1}}M}{\partial {{x}_{k}}}-\frac{1}{2}{{\left( {{\mu }^{ind}} \right)}^{T}}\frac{\partial {{T}^{11}}}{\partial {{x}_{k}}}{{\mu }^{ind}}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
The above is in addition to the permanent ele forces (second term is related to torque, which can be converted to forces on frame defining atoms).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;math&amp;gt;\frac{\partial U_{sys}^{t}}{\partial {{x}_{k}}}=-\frac{1}{2}{{\left( {{M}^{t}} \right)}^{T}}\frac{\partial {{T}^{1}}}{\partial {{x}_{k}}}{{M}^{t}}-{{\left( {{M}^{t}} \right)}^{T}}{{T}^{1}}\frac{\partial \Re }{\partial {{x}_{k}}}{{M}^{{}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2073</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2073"/>
		<updated>2025-04-02T13:51:50Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* proteins, nucleic acids, common organics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomolmd.org/pren/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomolmd.org/pren/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
If you want to build a peptide from a sequence, you can use tinker &amp;quot;protein.x&amp;quot; command, for example, ACE-ALA-NME, while create/use a tinker.key to specify which force field (with one line as below).&lt;br /&gt;
 parameters /path/to/amoebabio18.prm&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
== Compiling &amp;amp; running: ==&lt;br /&gt;
[[Software:tinkergpu]] &lt;br /&gt;
&lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Software:tinkergpu&amp;diff=2051</id>
		<title>Software:tinkergpu</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Software:tinkergpu&amp;diff=2051"/>
		<updated>2024-10-11T16:35:00Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Compile Tinker9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:labsoftware]]&lt;br /&gt;
==Tinker9 GPU Molecular Dynamics==&lt;br /&gt;
&lt;br /&gt;
Tinker9 is the next generation of Tinker software with GPU accelaration. As of 2021, Ren lab switched to Tinker9 for GPU simulations, which is similar/consistent to Tinker CPU in terms of usage/setup, is faster than OpenMM for AMOEBA and some fixed charged force fields, and has all our new development for AMOEBA+.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For single molecule or cluster without PBC, please CPU code. Use openmp-threads to speed up if necessary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The setup and key files used by Tinker CPU (on this wiki page) can be directly applied to Tinker9.&lt;br /&gt;
&lt;br /&gt;
==Source code==&lt;br /&gt;
https://github.com/TinkerTools/tinker9 &lt;br /&gt;
&lt;br /&gt;
Free to academic and nonprofit org&lt;br /&gt;
&lt;br /&gt;
== Compile Tinker9 ==&lt;br /&gt;
Please read Tinker9 Github site for how to setup the environmental variables and compile Tinker9 code (https://github.com/TinkerTools/tinker9). Successful builds on various hardware and cuda version can also be found at https://github.com/TinkerTools/tinker9/discussions/121.  &lt;br /&gt;
&lt;br /&gt;
 Note that Tinker9 required &amp;quot;matching&amp;quot; canonical Tinker 8, which should be automated by CMAKE script now.https://github.com/TinkerTools/tinker9/blob/master/README.md  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As of May 23, 2022, Ren lab clusters equiped with GPU cards all have cuda version 11 with compatitable cuda driver. Here is a script file to compile tinker9  &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# build on bme-sugar&lt;br /&gt;
# Chengwen Liu&lt;br /&gt;
&lt;br /&gt;
rm -fr *.sh src* *Make* cmake-* tinker9&lt;br /&gt;
&lt;br /&gt;
export CUDAHOME=/usr/local/cuda-11.2&lt;br /&gt;
export CUDACXX=$CUDAHOME/bin/nvcc&lt;br /&gt;
export FC=/usr/bin/gfortran&lt;br /&gt;
export CXX=/usr/bin/g++&lt;br /&gt;
export ACC=/home/liuchw/shared/nvidia/hpc_sdk/Linux_x86_64/21.1/compilers/bin/nvc++&lt;br /&gt;
export opt=release&lt;br /&gt;
export host=0&lt;br /&gt;
export prec=m&lt;br /&gt;
export compute_capability=60,70,75,80&lt;br /&gt;
export cuda_dir=$CUDAHOME&lt;br /&gt;
export CMAKEHOME=/home/liuchw/shared/cmake3.21/bin/&lt;br /&gt;
&lt;br /&gt;
$CMAKEHOME/cmake ..&lt;br /&gt;
&lt;br /&gt;
make -j&lt;br /&gt;
                                                                                   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This is to say, after downloading Tinker9, make a build directory in tinker9 home directory. Then running the above should do everything.&lt;br /&gt;
==2024 Tinker compiling==&lt;br /&gt;
To build tinker9 on Rocky 9.3 Linux cuda 11.8, gcc 11.4, cmake 3.28&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/TinkerTools/tinker9 tinker9_R93&lt;br /&gt;
cd tinker9_R93 &amp;amp;&amp;amp; mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cp /home/pren/tinker9/run.sh.r9 .&lt;br /&gt;
./run.sh.r9&lt;br /&gt;
in run.sh.r9:&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# build on bme-sugar&lt;br /&gt;
# Chengwen Liu&lt;br /&gt;
rm -fr *.sh src* *Make* cmake-* tinker9&lt;br /&gt;
export CUDAHOME=/usr/local/cuda-11.8&lt;br /&gt;
export CUDACXX=$CUDAHOME/bin/nvcc&lt;br /&gt;
export FC=gfortran compute_capability=70 gpu_lang=cuda cmake ..&lt;br /&gt;
export cuda_dir=$CUDAHOME&lt;br /&gt;
export CMAKEHOME=/home/pren/Software/cmake-3.28.0/bin&lt;br /&gt;
$CMAKEHOME/cmake ..&lt;br /&gt;
make -j 6&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Example setup, xyz and key files for protein simulations: [https://github.com/TinkerTools/tinker9/blob/master/example/ https://github.com/TinkerTools/tinker9/blob/master/example/]&lt;br /&gt;
&lt;br /&gt;
Recommend to use RESPA integrator with 2fs time step and write out less frequent (e.g. every 2 ps). On RTX3070, you should be able to achieve ~40ns/day for DHFR.&lt;br /&gt;
Use MonteCarlo or Langvin piston for pressure control in NPT&lt;br /&gt;
More details see Tutorials&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/&lt;br /&gt;
== Run Script ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple script to run molecular dynamics&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 # set the GPU device&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # set to 1,2, etc to specify the one you want&lt;br /&gt;
 &lt;br /&gt;
 # add tinker9 executables to PATH&lt;br /&gt;
 export TINKER9=/home/liuchw/Softwares/tinkers/Tinker9/2205/build_cuda11&lt;br /&gt;
 export PATH=$PATH:$TINKER9&lt;br /&gt;
 &lt;br /&gt;
 # option 1 to run dynamic&lt;br /&gt;
 nohup dynamic9 your.xyz -k your.key 1000 2.0 2.0 4 298.15 1.0 &amp;gt;your.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # option 2 to run dynamic&lt;br /&gt;
 nohup tinker9 dynamic your.xyz -k your.key 1000 2.0 2.0 4 298.15 1.0 &amp;gt;your.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
To use Tinker 9 on RTX4090 or A6000, node15x &amp;amp; node 16x, or 30x0/20x0 with older Xeon processors (eg node 10x, node4x):&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 export TINKER9=/home/pren/tinker9/tinker9_xeon/build/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 400.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
The above also tested on RTX 30x0 with older xeon processors (tacc node, see &amp;quot;lscpu&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2050</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2050"/>
		<updated>2024-10-11T16:29:30Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Command line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #source /home/liuchw/.bashrc.tinker9&lt;br /&gt;
 #export TINKER9=/home/pren/tinker9/tinker9_sugar/build/&lt;br /&gt;
 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/targets/x86_64-linux/lib/&lt;br /&gt;
 export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
 export CUDA_VISIBLE_DEVICES=0 # device number; can use 1 or 2 if there are multiple GPU cards&lt;br /&gt;
 $TINKER9/tinker9 dynamic bench7.xyz -k bench7.key 5000 2.0 1000.0 4 298.15 1.0 N &amp;gt; out &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 0.1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
  1     1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2047</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2047"/>
		<updated>2024-08-06T15:39:01Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* MD setup-initial equilibration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.01”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. You can even turn off polarization initially (polarizeterm NONE) during EQ and add it back (&#039;&#039;&#039;polar-eps 0.001&#039;&#039;&#039; or tighter for production) &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2046</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2046"/>
		<updated>2024-08-06T15:28:39Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive (&#039;&#039;&#039;dcd-archive&#039;&#039;&#039; to produce compressed traj for large systems; need .xyz or .pdb to render in VMD)&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2045</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2045"/>
		<updated>2024-08-06T15:25:31Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2044</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2044"/>
		<updated>2024-08-06T15:25:24Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 archive&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2043</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2043"/>
		<updated>2024-08-06T15:20:19Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
Documentation: https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2042</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2042"/>
		<updated>2024-08-06T15:20:03Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/text/feature/integrator-langevin-piston.html#implementation-2 &lt;br /&gt;
Semi-isotropic pressure control not finished yet&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2041</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2041"/>
		<updated>2024-08-06T15:16:29Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Recommended NVT and NPT combinations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Preferred/Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
 vdw-cutoff 9 (12 for amoeba)&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 9.0 (7.0 for amoeba)&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001 (only for amoeba)&lt;br /&gt;
 polar-predict (only for amoeba)&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2040</id>
		<title>Tutorial:tinkertut</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tutorial:tinkertut&amp;diff=2040"/>
		<updated>2024-08-05T19:00:14Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* Available thermostat and barostat in TINKER (2021) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Purposes =&lt;br /&gt;
This page provide tutorials on using AMOEBA force field via Tinker (CPU) and Tinker-OpenMM (GPU) programs.&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Some simple tutorials about Tinker I used in my teaching below. Note you can directly download tinker executables from [https://dasher.wustl.edu/tinker/ https://dasher.wustl.edu/tinker/]&amp;amp;nbsp;(Windows, mac. linux) for the following tutorials.&lt;br /&gt;
&lt;br /&gt;
You can either use command lines in Windows CMD window or Linux terminals, or use FFX interface for some exercises. &#039;&#039;&#039;Actually applications always use command lines to operate in Linux OS&#039;&#039;&#039;. If you are not familiar with Linux, this is the oppurtunity to practice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;[https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/ &amp;lt;span style=&amp;quot;background-color:#ffff00;&amp;quot;&amp;gt;https://biomol.bme.utexas.edu/~pren/courses/tinker-tut/&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Below you will find more detailed instructions and discussions.&lt;br /&gt;
&lt;br /&gt;
= Input files =&lt;br /&gt;
&lt;br /&gt;
You can find examples of input files in tinker distribution under tinker/bench, tinker/example or tinker/test. Two files are required to run TINKER calculations: *.xyz and *.key For example, open butane.xyz and butane.key in tinker/example/ (available in all official distributions) to see what’s inside.&lt;br /&gt;
&lt;br /&gt;
== *.xyz file ==&lt;br /&gt;
&lt;br /&gt;
*The first number on the 1st line is how many atoms total. &lt;br /&gt;
*There may be a second line that specify the box dimensions if the system is periodic (newer format since tinker 6) &lt;br /&gt;
*The first column is the atomic index &lt;br /&gt;
*The second column is the atomic symbol &lt;br /&gt;
*The 3 -5th columns are x,y,z coordinates in Angstrom &lt;br /&gt;
*The 6th is the “atom type” defined in the *.key file. This is the index tinker uses to assign parameters from the key/parameter file. &lt;br /&gt;
*The 7th – last columns are lists of atoms that are connected to the current atom&lt;br /&gt;
&lt;br /&gt;
== *.key file ==&lt;br /&gt;
&lt;br /&gt;
The key file may have all the actual parameters or a link to the actual parameters file specified in the first line. The parameters specify the bond, angle, torsion, vdW and electrostatic interactions between atoms based on the “atom type”. If you see an error related to OMP, please set the OPENMP-THREADS in the key file to a number less than the # of CPU cores on your computer. This sets how many CPU cores are used in the parallel execution.&lt;br /&gt;
&lt;br /&gt;
For example, in protein.key below, borrowed from tinker/bench/bench7.key, the first line specific the actual parameters are contain in the amoebapro13.prm. More examples can be found in tinker/bench, tinker/example, or tinker/test.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
 parameters           $TINKERDIR/params/amoebapro13.prm&lt;br /&gt;
 # &lt;br /&gt;
 # the amoebapro13.prm is the AMOEBA protein force field in tinker/params/. If you have a ligand you can add the parameters below. More info below&lt;br /&gt;
 #&lt;br /&gt;
 # verbose                                  &#039;&#039;# printing info for every step, for debugging mostly&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #randomseed            123456789&lt;br /&gt;
 integrator            respa                &#039;&#039;#this multi-time step integrator allows TINKER to use 2 fs time step&#039;&#039;&lt;br /&gt;
 #HEAVY-HYDROGEN                    #&#039;&#039;This will increase H atom mass automatically so 3 or 3.5 fs time step can be used.                          &#039;&#039;&lt;br /&gt;
 &amp;amp;nbsp;                                  #&#039;&#039;Kinetics will  be affected               &#039;&#039;&lt;br /&gt;
 neighbor-list                              &#039;&#039;# this below requires your box is twice the cutoff plus 2-3 Ang.&#039;&#039;&lt;br /&gt;
                                           # &#039;&#039;If your box is too small for vdw cutoff but OK for Ewald, you can use &amp;quot;mpole-list&amp;quot; here.&#039;&#039;&lt;br /&gt;
 #openmp-threads    16                       &#039;&#039;# how many core you want to use on the node.&#039;&#039;&lt;br /&gt;
 #&lt;br /&gt;
 #  Define the Periodic Box and Cutoffs&lt;br /&gt;
 #&lt;br /&gt;
 a-axis                62.23&lt;br /&gt;
 vdw-cutoff            12.0&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Ewald Summation&lt;br /&gt;
 #&lt;br /&gt;
 ewald&lt;br /&gt;
 ewald-cutoff          7.0                  &#039;&#039;# we use such small cutoff because dipole/quadrupole die off faster than point charge.&#039;&#039;&lt;br /&gt;
 # pme-grid  64 64 64                         &#039;&#039;#If speed is a concern, set this mannually to be slightly bigger than simulation box size. E.g. use 64 is box is 62.23 (1.2x is the best but slower). &#039;&#039;&lt;br /&gt;
                                            &#039;&#039;Must be even with factors of only 2, 3 and 5. see source/kewald.f for a list. Sometimes the default grid size is conservative&#039;&#039; &lt;br /&gt;
 &#039;&#039;                                  &#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 #fft-package           FFTW&lt;br /&gt;
 #&lt;br /&gt;
 #  Set Parameters for Induced Dipole Convergence&lt;br /&gt;
 #&lt;br /&gt;
 #polarization OPT3                         #OPT4 is mre accurate but OPT3 is faster&#039;&#039;&#039;&lt;br /&gt;
 polar-eps             0.001                &#039;&#039;# the induced dipole convergence threshold&#039;&#039;&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #&lt;br /&gt;
 # Example of overwriting the parameters in the .prm file. The bond parameters between &lt;br /&gt;
 # atom classes 1 and 4 are redefined below, which&lt;br /&gt;
 # will overwrite those already in the amoebapro13.prm. &lt;br /&gt;
 #this is only for illustration purpose&lt;br /&gt;
 # bond          1    4          200.00     1.1&lt;br /&gt;
&lt;br /&gt;
= How to generate input files of your own =&lt;br /&gt;
&lt;br /&gt;
== proteins, nucleic acids, common organics ==&lt;br /&gt;
&lt;br /&gt;
In tinker/params, you can find pre-existing parameters for certain molecular systems, both AMOEBA, amber, charmm, opls, mmff, and mm2/3.&lt;br /&gt;
&lt;br /&gt;
== PDB to xyz ==&lt;br /&gt;
&lt;br /&gt;
If you have a pdb file you can convert it tinker xyz file by specifying a prm file above. It will remove the heteroatoms such as ligand, which you can use POLTYPE to generate parameters for.&lt;br /&gt;
&lt;br /&gt;
First you need to determine the protonation state of charged residue. Tools like propka can do this quikly: [http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&lt;br /&gt;
&lt;br /&gt;
Once you decided the protonation state, make sure the residue name in PDB file match the protonation state (list below). For example, ASH is the neutral form of ASP. Then you can run &amp;quot;pdbxyz.x&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;GLY&#039; &#039;ALA&#039; &#039;VAL&#039; &#039;LEU&#039; &#039;ILE&#039; &#039;SER&#039; &#039;THR&#039; &#039;CYS&#039; &#039;CYX&#039; &#039;CYD&#039; &#039;PRO&#039; &#039;PHE&#039; &#039;TYR&#039; &#039;TYD&#039; &#039;TRP&#039; &#039;HIS&#039; &#039;HID&#039; &#039;HIE&#039; &#039;ASP&#039; &#039;ASH&#039; &#039;ASN&#039; &#039;GLU&#039; &#039;GLH&#039; &#039;GLN&#039; &#039;MET&#039; &#039;LYS&#039; &#039;LYD&#039; &#039;ARG&#039; &#039;ORN&#039; &#039;AIB&#039; &#039;PCA&#039; &#039;UNK&#039;&lt;br /&gt;
&lt;br /&gt;
UNK means unownk; AIB, ORN and PCA&amp;amp;nbsp; are modified AA.&lt;br /&gt;
&lt;br /&gt;
[https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN https://www.ebi.ac.uk/pdbe/entry/pdb/3q9g/modified/ORN]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA http://www.ebi.ac.uk/pdbe/entry/pdb/4ua7/modified/PCA]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminal residue names:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
COH ACE NH2 NME&amp;amp;nbsp; FOR&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HETATM&#039;&#039;&#039; (residue name) recoginzed by pdbxyz:&lt;br /&gt;
&lt;br /&gt;
HOH K CA MG NA CL&lt;br /&gt;
&lt;br /&gt;
== AMOEBA library ==&lt;br /&gt;
&lt;br /&gt;
For AMOEBA, please use amoeba09.prm for common small molecules, amoebapro13.prm for proteins. Nucleic acid parameters coming soon (end of 2017). More information here: [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Amoeba]&lt;br /&gt;
&lt;br /&gt;
If you have a protein, you use &amp;quot;pdbxyz&amp;quot; to convert it to tinker xyz file. It will ask you for a key file (1bty.key below) or you can create a key file with &amp;quot;parameters $TINKERDIR/params/amoebapro13.prm&amp;quot; in it:&lt;br /&gt;
&lt;br /&gt;
 pdbxyz 1bty.pdb -k ./1bty.key&lt;br /&gt;
&lt;br /&gt;
== AMOEBA for a new ligand ==&lt;br /&gt;
&lt;br /&gt;
Note that pdbxyz recognize proteins, water (res name HOH and some ions). The ligand (benzamidine above) is stripped. For that you need to derive your own parameters. For AMOEBA this can be done using POLTYPE: [https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype https://biomol.bme.utexas.edu/wiki/index.php/Research_ex:Poltype]&lt;br /&gt;
&lt;br /&gt;
 Input: ligand.sdf or ligand.pdb (for example, you can truncate the ligand &amp;quot;BEN&amp;quot; out of the 1bty.pdb) &lt;br /&gt;
 Output: will produce the xyz and corresponding key files (ttt.xyz and ttt.key):&lt;br /&gt;
&lt;br /&gt;
If you will merge the ligand xyz file with another molecule, &#039;&#039;&#039;make sure you set the suitable range for atom types (an option for pOLTYPE) so that they won&#039;t overlap.&#039;&#039;&#039; See the &amp;quot;Check the results section&amp;quot; on POLTYPE website before using them. Use &amp;quot;analyze.x&amp;quot; to make sure the xyz and key files work correctly: &amp;quot;analyze.x ttt.xyz -k ttt.key ep&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== build a solvent box ==&lt;br /&gt;
&lt;br /&gt;
=== arbirary solvent ===&lt;br /&gt;
&lt;br /&gt;
Use xyzedit.x to build a water (or any solvent) box starting from a water monomer (e.g. tinker/test/water.xyz). You can specify many monomers to add and how big the box is. Type xyzedit.x at the command line and you will be asked to enter relevant inputs (or you may type all the parameters in one line).&lt;br /&gt;
&lt;br /&gt;
Make sure edit the key file to add box size and Ewald related keywords (see [http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file http://biomol.bme.utexas.edu/tinker-openmm/index.php/TINKER-OPENMM:Tinker-tut#.2A.key_file])&lt;br /&gt;
&lt;br /&gt;
=== prebuilt water box ===&lt;br /&gt;
&lt;br /&gt;
Some prebuilt waterboxs:&amp;amp;nbsp;[http://biomol.bme.utexas.edu/~pren/downloads/waterbox http://biomol.bme.utexas.edu/~pren/downloads/waterbox]&lt;br /&gt;
&lt;br /&gt;
Larger boxes can be created as supercells of smaller boxes, e.g. this following command will create a box 64x larger than the orignial box.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo -e &amp;quot;5\n4\n\n&amp;quot; | crystal.x watersmall.xyz -k tinker.key&lt;br /&gt;
== Combining two xyz files ==&lt;br /&gt;
&lt;br /&gt;
Tinker &amp;quot;xyzedit.x&amp;quot; program (option 20) can be used to combine two xyz files into one (matching key file for each xyz is required). You can merge the key or parameter files by appending one to the other, but please make sure the atom types are not overlapping between the two.&lt;br /&gt;
&lt;br /&gt;
For the above 1BTY example, poltype will translate/rotate the ligand in standard orientation. You may need a script to copy the coordinates from ligand.pdb into ttt.xyz (hwich you get out of the POLTYPE run).&lt;br /&gt;
&lt;br /&gt;
Then you can use xyzedit.x to combine 1bty.xyz and lig.xyz into one xyz file with the two molecules orient/position as in PDB. Merge the key file by appending ttt.key (except the first line which contains header already in amoebapro13.prm of 1bty.key) to 1bty.key; again avoid overlapping atom types between the ligand and protein.&lt;br /&gt;
&lt;br /&gt;
== Soaking solute in solvent ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Tinker &amp;quot;xyzedit.x&amp;quot; is an interactive program (option 20) that can be used for this as well. You just need a molecule.xyz and waterbox.xyz along with matching key files (actual names do not matter).&lt;br /&gt;
&lt;br /&gt;
Some water files (monomers, boxes) are in tinker/example or test folder. One can make a water box of different size using this program too (starting from one water or a cluster of water and use option 19). Option 21 can add ions to solvent box. To distiguish between AMOEBA or fixed charged FF simulation files, check the key file to see which prm file it is pointing to.&lt;br /&gt;
&lt;br /&gt;
Or you can use this utility: [http://www.ime.unicamp.br/~martinez/packmol/home.shtml http://www.ime.unicamp.br/~martinez/packmol/home.shtml]&lt;br /&gt;
&lt;br /&gt;
On renlab cluster, there is &amp;quot;packmol&amp;quot; installed at /home/liuchw/Softwares/packmol-20.14.4/packmol&lt;br /&gt;
&lt;br /&gt;
Two examples for generating a cubic box:&lt;br /&gt;
&lt;br /&gt;
example 1: generate a pure liquid box, using water as an example. In the real cases, one could calculate the number of molecules and the length of the cube according to desired density. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output water-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;example 2: soak a MeOH molecule into the above box. We first let MeOH be in the center of the box with coordinates (9,9,9), and then soak with water in 18.6 A cubic box. &amp;lt;syntaxhighlight lang=&amp;quot;abap&amp;quot;&amp;gt;&lt;br /&gt;
filetype tinker&lt;br /&gt;
output liquid-box.xyz&lt;br /&gt;
tolerance 2.0&lt;br /&gt;
&lt;br /&gt;
structure MeOH.xyz&lt;br /&gt;
number 1&lt;br /&gt;
center&lt;br /&gt;
fixed 9.0 9.0 9.0 0.0 0.0 0.0&lt;br /&gt;
end structure&lt;br /&gt;
&lt;br /&gt;
structure Wat.xyz&lt;br /&gt;
number 216&lt;br /&gt;
inside cube 0. 0. 0. 18.6&lt;br /&gt;
end structure&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In the above two examples, all one needs are the &amp;quot;Wat.xyz&amp;quot; and &amp;quot;MeOH.xyz&amp;quot; files. After the box is generated, it is straightforward to use Tinker to minimize the structure. &lt;br /&gt;
&lt;br /&gt;
After construct the simulations, relax the system using minimize and dynamics (restraint the solute first), with proper restraints and heating. See [[Tutorial:tinkertut#MD_setup-initial_equilibration|MD setup]] for details&lt;br /&gt;
&lt;br /&gt;
== Check your xyz/key files and common errors ==&lt;br /&gt;
&lt;br /&gt;
Once you have a pair of xyz and key (and prm file the key uses one), you can use &amp;quot;analyze&amp;quot; to do some basic check&lt;br /&gt;
&lt;br /&gt;
analyze xxx.xyz -k xxx.key e&amp;quot; will print energy and its components.&lt;br /&gt;
&lt;br /&gt;
 If there are any error related to missing parameters, you need to fix them. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key em&amp;quot; prints total charge and dipole moments etc.&lt;br /&gt;
&lt;br /&gt;
 The total charge should match your expectation (0, -1, +1) etc&lt;br /&gt;
 If this is a box of solute in water, you should add neutralizing ions (K+ or Cl-) and then &amp;quot;additional&amp;quot; 0.1 mM KCl. So the next charge should be 0!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;analyze xxx.xyz -k xxx.key ep&amp;quot; prints all parameters&lt;br /&gt;
&lt;br /&gt;
 Check if every atom has a multipole (number of multipole matches no of atoms) &lt;br /&gt;
 check if every atom has vdw (if an atom has 0.000 0.000 for vdw R and eps, that means the vdw parameters are missing; need to add) &lt;br /&gt;
 check polarization groups are making sense. If you see every atom is its own group, this is likely wrong. Typically we keep each function group (e.g. benzyl) as one group. &lt;br /&gt;
&lt;br /&gt;
analyze with EL will print out large interactions, for example large ele or vdw interactions of two atoms that are too close (in early PDB structure this can happen)&lt;br /&gt;
&lt;br /&gt;
analyze with &amp;quot;ED&amp;quot; option (debug) will print out all individual interactions and lot more information. The output&amp;amp;nbsp;is of course huge if you do this to a large bix, but you can use &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;vdwterm only, bondterm only, angleterm only. multpoleterm only, polarizeterm only, etc&amp;lt;/span&amp;gt;&#039;&#039;&#039; to check a specific energy component. Or use &#039;&#039;&#039;bondterm none, angleterm none&#039;&#039;&#039;....ect to turn off some interactions you don&#039;t want to check. A full list of xxxTERM can be found in &amp;lt;span style=&amp;quot;color:#2980b9;&amp;quot;&amp;gt;&#039;&#039;&#039;tinker/source/prmkey.f&#039;&#039;&#039;&amp;lt;/span&amp;gt;(grep TERM).&lt;br /&gt;
=== Induced dipole not converging error ===&lt;br /&gt;
&lt;br /&gt;
If analyze give you error related to induced dipole not converging, the structure is bad. If you see &amp;quot;induced dipole not converging&amp;quot; error in the beginning of your MD, it is also due to bad structures (atoms too close). The structure needs refinement, or missing parameters above. To refine the structure&lt;br /&gt;
&lt;br /&gt;
1. minimize the structure. you can turn off polarization (polarizeterm none) or even permanent ele completely (multipoleterm none &amp;amp; polarizeterm none) first to minimize using vdw to move close atoms apart. Then turn on multipole and then induce back&lt;br /&gt;
&lt;br /&gt;
2 For MD simulations of protein/RNA/DNA in water, run MD first at low T with pro/rna/dna &amp;quot;heavy atoms&amp;quot; restrained (e.g. restrain-position -1 1000 5.0 or restrain-position 2 , , , 1.0) to let water &amp;amp; counter ions to relax for few ns. Then gradually heat up and remove the restraints. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#d35400;&amp;quot;&amp;gt;Note &amp;quot;restrain-position -1 1000 0.0&amp;quot; or &amp;quot;restrain-position 2 , , , 0.0&amp;quot; DOENOT mean 0 restraint (k=0.0) on atoms 1 to 1000 or atom 2!!!&amp;amp;nbsp; &amp;quot;0.0&amp;quot; is replaced by 100.0 in tinker by default.&amp;lt;/span&amp;gt;&#039;&#039;&#039; If you don&#039;t want restraint, comment out/remove these lines.&lt;br /&gt;
&lt;br /&gt;
3. But if you see this error randomly over few hundreds of ps, which may happen for tough systems of large/many charges e.g DNA/RNA, you can add &amp;quot;&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&#039;&#039;&#039;USOLVE-CUTOFF 0.0&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;quot; option to key. This will change the precondition behavior and make induced dipole solver more stable. It is not used by default because for &amp;quot;easy&amp;quot; systems like boxes of water, this makes MD little slower (more iterations to converge induced dipoles). If still have stability issue you may further add &amp;quot;&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#e67e22;&amp;quot;&amp;gt;USOLVE-DIAG xx&amp;lt;/span&amp;gt;&#039;&#039;&#039;&amp;quot; where xx is 2.0 by default and a smaller number towards 1 (e.g. 1.5) will make more stable but slightly slower.&lt;br /&gt;
&lt;br /&gt;
4. If system is rather big,&amp;amp;nbsp;use &amp;quot;polar-eps 0.01&amp;quot; or 0.001 during system setup and 0.0001 for production.&lt;br /&gt;
&lt;br /&gt;
== Modified PRO &amp;amp; NA residues ==&lt;br /&gt;
&lt;br /&gt;
=== Build a structure with modified residues ===&lt;br /&gt;
&lt;br /&gt;
Modify residues in a PDB file.&lt;br /&gt;
&lt;br /&gt;
Input: PDB files of the biopolymer, an original residue and a modified residue. The original residue must be present in the biopolymer, and the modified residue must share at least 3 atoms with the original residue with identical coordinates. The modified residue is usually obtained by manually modifying the original residue.&lt;br /&gt;
&lt;br /&gt;
Output: A PDB file with specified residues modified to the new residue. [https://biomol.bme.utexas.edu/~zj2244/tutorial/modeling/modres/modified_pdb/ link]&lt;br /&gt;
&lt;br /&gt;
 # change residues 2 and 14 in dna15.pdb from res_A to res_pA&lt;br /&gt;
 morphling.py -i dna15.pdb -o pdna15.pdb -t0 res_A.pdb -t1 res_pA.pdb -n 2,14&lt;br /&gt;
&lt;br /&gt;
=== Convert pdb to xyz ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zjing7/modified-na link]&lt;br /&gt;
&lt;br /&gt;
= More on running Tinker and tinker9 (GPU) =&lt;br /&gt;
==Manual==&lt;br /&gt;
https://tinkerdoc.readthedocs.io/en/latest/ &lt;br /&gt;
== Command line ==&lt;br /&gt;
&lt;br /&gt;
Tinker programs can be run interactively, which is the best way to learn what are the required inputs. Tinker programs can also run in background with all parameters specified, for the purpose of automation:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;analyze.x ttt.xyz -k ttt.key ep&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;dynamic.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;# the bench7.xyz above can be found in tinker official distribution inside tinker/bench/&#039;&#039;&lt;br /&gt;
 #2-fs time step for MD here is ok because of the &amp;quot;integrator respa&amp;quot; in the key file&lt;br /&gt;
&lt;br /&gt;
Or for tinker9 (above) Or tinker-openmm:&lt;br /&gt;
&lt;br /&gt;
  export CUDA_DEVICE_ORDER=PCI_BUS_ID&lt;br /&gt;
  export CUDA_VISIBLE_DEVICES=0 # device number, 0, 1...is the 1st, 2nd...&lt;br /&gt;
  #source cuda, tinker-openmm, gcc related env var (see tinker-openmm install)&lt;br /&gt;
  nohup dynamic_omm.x bench7 100000 3.0 6.0 2 298.0 N &amp;gt; ben7.log &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Pause and resume MD ==&lt;br /&gt;
&lt;br /&gt;
Tinker creates .dyn file that contains coordinates and velocities needed for restart MD. To stop MD, simply create a .end file (e.g. touch myrun.end) in the folder where MD is running. At the next time MD frame was written, the end file will signal Tinker to stop. To resume later simply rerun dynamics with the presence of the .dyn file. Note the output file of dynamics does not resume the count of MD steps/frames.&lt;br /&gt;
&lt;br /&gt;
== Additional notes for &amp;quot;tinker-openmm&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
*It s recommended to use the respa inetgrator and 2-fs time step &lt;br /&gt;
*&amp;quot;heavy-hydrogen&amp;quot; in key file allows a 3-fs time step (not reommended) &lt;br /&gt;
*Bussi thermostat &lt;br /&gt;
*Only MC barostat is available for now. We are adding virial/Langevin piston pressure to openmm.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to specify different ensembles for MD simulation =&lt;br /&gt;
&lt;br /&gt;
== For TINKER-openmm ==&lt;br /&gt;
&#039;&#039;&#039;Tinker-Openmm is no longer supported since 2021. Use tinker9 for GPU MD (see [[Software:tinkergpu|Tinker GPU]])&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not many options available.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
For NVT, use Bussi for thermostat, RESPA integrator (2fs)&lt;br /&gt;
&lt;br /&gt;
For NPT, use Montecarlo for Barostat, Bussi thermostat. Verlet (1 fs) is safer than RESPA for use with MC barostat if very accurate density is needed.&lt;br /&gt;
&lt;br /&gt;
See below for keyword syntax.&lt;br /&gt;
&lt;br /&gt;
== Available thermostat and barostat in TINKER (2021) ==&lt;br /&gt;
&lt;br /&gt;
Thermostats:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD (lines you add to .key file)&lt;br /&gt;
 Bussi-Parrinello           thermostat bussi&lt;br /&gt;
 Berendsen                  thermostat berendsen&lt;br /&gt;
 Andersen Stochastic        thermostat andersen&lt;br /&gt;
 Nose-Hoover                thermostat nose-hoover&lt;br /&gt;
&lt;br /&gt;
There are 3 barostats available via the “barostat” keyword:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Berendsen                  barostat berendsen&lt;br /&gt;
 Monte-Carlo                barostat montecarlo&lt;br /&gt;
 Lagevin                    Barostat Langevin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above thermostat and barostats are available for the Verlet, Beeman and RESPA integrators, and can be used in combination with those integrators. These integrators are available via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                     KEYWORD&lt;br /&gt;
 Verlet                     integrator verlet&lt;br /&gt;
 Beeman                     integrator beeman (tinker 8 CPU only)&lt;br /&gt;
 RESPA                      integrator respa&lt;br /&gt;
&lt;br /&gt;
Note that the &#039;&#039;&#039;defaults&#039;&#039;&#039; are Bussi for thermostat, Berendsen for barostat, and Beeman for integrator.&lt;br /&gt;
&lt;br /&gt;
Then there are two special integrators, a stochastic one, and a Nose-Hoover that does NPT. The stochastic integrator uses a kind of Langevin temperature bath for thermostating, and does listen to the barostat keyword. The Nose-Hoover integrator uses a separate code branch and does only NPT with Nose-Hoover methods following Martyna-Tuckerman-Klein. You can get these via:&lt;br /&gt;
&lt;br /&gt;
 METHOD                      KEYWORD&lt;br /&gt;
 Stochastic                   integrator stochastic (no need for other T control)&lt;br /&gt;
 Nose-Hoover NPT             integrator nose-hoover (no need other keywords for T or P; starting structures need to reasonable)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Recommended NVT and NPT combinations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NVT keywords combination in the key file (2fs time step)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi &lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, relative isotropic and homogenous systems)&lt;br /&gt;
&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
 barostat MonteCarlo&lt;br /&gt;
 integrator RESPA&lt;br /&gt;
&lt;br /&gt;
Recommended NPT (2fs, anisotropic systems such as membrane, or large local volume fluctuation in protein folding. Slower than above for virial calculations)&lt;br /&gt;
&lt;br /&gt;
 barostat Langevin&lt;br /&gt;
 Integrator RESPA   #or Verlet/1 fs; T control not needed&lt;br /&gt;
 a-axis 40 #change this to your actual box size; b or c can be different from a&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Alternative NPT (1fs, built in P and T control)&lt;br /&gt;
&lt;br /&gt;
 integrator nose-hoover&lt;br /&gt;
&lt;br /&gt;
== Recommended keywords (add somewhere in the .key file) for NVT ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
 thermostat bussi&lt;br /&gt;
&lt;br /&gt;
Command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 2 298  (100000 steps, 2.0 fs time step, dump structure every 1.0 ps, option 2 is NVT, 298 is the target T)&lt;br /&gt;
&lt;br /&gt;
It is also possible to combine &amp;quot;&#039;&#039;&#039;integrator Beeman&#039;&#039;&#039;&amp;quot; or &#039;&#039;&#039;&amp;quot;thermostat Berendsen”&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;thermostat Andersen&amp;quot;&#039;&#039;&#039;. But RESPA allows large time steps (2.0 or 2.5 fs) than Beeman. Berendsen thermostat does not provide canonical ensemble fluctuation.&lt;br /&gt;
&lt;br /&gt;
== NVE ==&lt;br /&gt;
&lt;br /&gt;
 integrator respa&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 dynamic xxx.xyz 100000 2.0 1.0 1&lt;br /&gt;
&lt;br /&gt;
No need for thermostat or barostat of course. It is best to use smaller time step such as 1.0fs to conserve energy better. May even use smaller polar-eps (10^-6) than default (10^-5) in the key file.&lt;br /&gt;
&lt;br /&gt;
== Non periodic system, e.g. gas molecules not in a box ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;_&amp;quot; style=&amp;quot;background:#eee; border:1px solid #ccc; padding:5px 10px&amp;quot;&amp;gt;integrate stochastic&amp;lt;/div&amp;gt; &lt;br /&gt;
If there is no box (a-axis) in the key file, or no box dimensions in the den file, the system is non-periodic. This will set the stochastic temperature control along with the stochastic MD integration. &#039;&#039;&#039;For gas phase molecular cluster (very few atoms), the recommended time step is 0.1 fs&#039;&#039;&#039;.&lt;br /&gt;
= Free energy calculations =&lt;br /&gt;
&lt;br /&gt;
Theory about free energy calculation: http://alchemistry.org/wiki/Bennett_Acceptance_Ratio&lt;br /&gt;
&lt;br /&gt;
About AMOEBA softcore and BAR, read our book chapter: &lt;br /&gt;
&lt;br /&gt;
[[File:PL_BAR_softcore.pdf|page=3|300px]]&lt;br /&gt;
&lt;br /&gt;
== MD setup-initial equilibration ==&lt;br /&gt;
&lt;br /&gt;
Determine protonation state of ionizable groups (ASP, GLU, LYS, ARG, HIS). Use propka here&amp;amp;nbsp;[http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/ http://nbcr-222.ucsd.edu/pdb2pqr_2.0.0/]&amp;amp;nbsp;for proteins. For ligand, you may use pka predicction tool&amp;amp;nbsp;from Chemaxon. &lt;br /&gt;
*Add water and counter ions (neutralize system) so that the density is ~1.0 g/cc. The distance between protein and box wall should be&amp;amp;nbsp;10-15 A. Check/remove extra water in the binding pocket as necessary (keep the crystal water molecules in the pocket) &lt;br /&gt;
*In the key file, set&amp;amp;nbsp;PME-grid&amp;amp;nbsp;to be&amp;amp;nbsp;1.2x&amp;amp;nbsp;box size in Ang. For example, if box size is 55, “pme-grid&amp;amp;nbsp;64 64 64” is enough. The default of Tinker is usually more conservative. See kewald.f for allowed grid values. Add &#039;&#039;&#039;“neighbor-list”, “polar-eps 0.0001”, “vdw-cutoff&amp;amp;nbsp;12”, &amp;quot;vdw-correction&amp;quot; “integrator respa”, “ewald”, “ewald-cutoff 7.0” &#039;&#039;&#039;&amp;amp;nbsp;to .key file. &lt;br /&gt;
*Minimize the box before MD. If you see errors related to polarization (induced dipole not converge), do this in two steps: first minimize with electrostatic (multipoleterm NONE) and polarization turned off (polarizeterm NONE in .key file), to ~5.0 or lower; then minimize again with ele then ele+polarization back on to ~2.0 or lower. You may use position-restraints&amp;amp;nbsp;&#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; if you don&#039;t want your solute to undergo dramtic changes. (RESTRAIN-POSITION -1 200 50.0, means restrain atoms 1 to 200 using a force constant of K=50 kcal/mol).&amp;amp;nbsp; &lt;br /&gt;
*MD relaxation. You may use GPU for MD now (dynamic_omm.x).&amp;amp;nbsp;Use repsa integrator and 2fs time step.&amp;amp;nbsp;Add&amp;amp;nbsp;&#039;&#039;&#039;position-restraints&#039;&#039;&#039; to restrain protein &amp;amp; ligands &#039;&#039;&#039;(HEAVY ATOMS only)&#039;&#039;&#039; in the key file&amp;amp;nbsp;initially; For metal ion-protein binding or weak binding ligand,&amp;amp;nbsp;we&amp;amp;nbsp;also suggest to use ~3 distance restraints between ion/ligand and first shell atoms. This is to prevent water disrupt the initial solute structure during the equlibration.&amp;amp;nbsp; &lt;br /&gt;
**Use 2 fs for all MD below.&amp;amp;nbsp;If you want to use 3fs (e.g for large systems),&amp;amp;nbsp;you need to&amp;amp;nbsp;&amp;quot;heavy-hydrogen&amp;quot; in the key file.&amp;amp;nbsp;Another way to spede up is to use the OPTx: &amp;quot;polarization OPT4&amp;quot; or &amp;quot;polarization OPT3&amp;quot; OPT3 is faster but bigger error. &lt;br /&gt;
**With the positional/distance restraints, run ~2ns&amp;amp;nbsp; NVT MD to gradually (e.g. exponentially) heat up the system from 10K&amp;amp;nbsp; to 298K or whatever expt T should be.&amp;amp;nbsp;Water/ions are&amp;amp;nbsp;relaxed after this step. &lt;br /&gt;
**Run NVT at 298K or expt T for ~2ns &#039;&#039;&#039;while gradually turning off all the position and distance restraints on protein-ligands.&#039;&#039;&#039; &lt;br /&gt;
**Run&amp;amp;nbsp;1.5&amp;amp;nbsp;ns NPT to compute the average density/box size (ignore the first 300ps). &#039;&#039;&#039;For GPU, only &amp;quot;barostat MonteCarlo&amp;quot; is available.&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
**NVT MD for ~2ns with box fixed at the average lengths from above. &lt;br /&gt;
**Check protein RMSD (esp. around binding pocket) from crystal structure after every step above. If any step gives large RMSD, redo that (and previous step) with longer/slower MD to correct the problems.   &lt;br /&gt;
*MD production run. For alchemical free energy, this involves setting the ligand group and various lambda values for ele and vdw to scale the interactions between ligand and surrounding (see below BAR section). &lt;br /&gt;
&lt;br /&gt;
== Hydration or binding using BAR ==&lt;br /&gt;
&lt;br /&gt;
Alchemical free energy calculations are available in TINKER, Tinker9 GPU (TINKER-OpenMM no longer supported). One needs to specify the ligand or solute using the group keyword&amp;amp;nbsp;in the key file (example below). The lambda scaling schedule can be specified by user, automated by the &amp;quot;bar.x&amp;quot; in TINKER. For each set of lambda value (scaling the interaction betweem ligand and enviroemnt and inside ligand), one needs to perform one MD simulation. The bar.x is then used to analyze the dG between neighboring steps i and j, using the arc files from MD simulation i and j. The total free energy is then sum of 1-2, 2-3, ...N-1 and N.&amp;amp;nbsp;See this reference for examples: &#039;&#039;J Comput Chem. 2017 Sep 5;38(23):2047-2055&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note &#039;&#039;&#039;GPU MD and bar code&#039;&#039;&#039;&amp;amp;nbsp;is much faster than the CPU one&amp;amp;nbsp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running BAR code in Tinker==&lt;br /&gt;
To compute free energy between two states (i and j), the bar.x (CPU or GPU) will need two trajectories (and two key files of course) of the same simulation length (frames). the two states can be neighboring lambda states in HFE or binding. &lt;br /&gt;
&lt;br /&gt;
See above (and PNAS 2008 paper) for BAR equations.&lt;br /&gt;
&lt;br /&gt;
Step 1 (bar option 1) is to generate two files, each contain the energy of its own state and perturbed energy (Eii, Eij). The second energy is using arc i and key of state j (bar will do this for you).&lt;br /&gt;
&lt;br /&gt;
 tinker9 bar 1 arc1 300 arc2 300 N &amp;gt; barfile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;tinker 9 bar&amp;quot; is for GPU. You can replace with CPU version bar.x (slower). the arc1 and arc2 can be in different folders with their matching key files.&lt;br /&gt;
&lt;br /&gt;
Example barfile produced from this step: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.bar.&lt;br /&gt;
&lt;br /&gt;
The output below shows 500 frame used, 300K, for frame 1, energy of Eii, Eij and volume of the system (since we can do NPT where volume changes)&lt;br /&gt;
  500    300.00  comments&lt;br /&gt;
       1          -6396.8707        -6396.7580        27379.1152&lt;br /&gt;
&lt;br /&gt;
The second section of this same file will have Ejj, Eji, volume&lt;br /&gt;
&lt;br /&gt;
Step  2 (bar option 2) &lt;br /&gt;
Use the barfile produced from above to compute dG , dH and dS&lt;br /&gt;
 tinker9 bar 2 {barfile} {startsnapshot} {totalsnapshot} 1 {startsnapshot} {totalsnapshot} 1 &amp;gt; {enefile}&lt;br /&gt;
Note this step is much faster since it uses energy from above. You can also set to use a subset of the total frames, e.g. to exam how the dG converge with longer simulaitons.&lt;br /&gt;
Example out: https://github.com/leucinw/autoBAR/blob/main/examples/Phenol-HFE/liquid/liquid-e000-v000.ene&lt;br /&gt;
&lt;br /&gt;
== HFE ==&lt;br /&gt;
&lt;br /&gt;
Common keywords for hydration free energy calculation (suggest NPT with MC barostat or Langevin piston barostat)&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 a-axis 40&lt;br /&gt;
 vdw-cutoff 12&lt;br /&gt;
 vdw-correction&lt;br /&gt;
 Ewald&lt;br /&gt;
 Ewald-cutoff 7.0&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 barostat Monte Carlo   #NPT. Use Langevin NPT if care e.g. membrane &lt;br /&gt;
 thermostat Bussi&lt;br /&gt;
 Integrator RESPA # 2-fs time step for solution; 1 for gas&lt;br /&gt;
 neighbor-list&lt;br /&gt;
 polar-eps 0.0001&lt;br /&gt;
 polar-predict&lt;br /&gt;
 #openmp-threads    16 #this is for CPU&lt;br /&gt;
 Vdw-annihilation      #this is to help sampling conformation at low lambda by removing intrmol vdw interactions; not needed for rigid solute.&lt;br /&gt;
&lt;br /&gt;
The ele and vdw schedules are found in our previous paper. Also recommended as below. Note you can add or remove steps based dG results and error bars.&lt;br /&gt;
&lt;br /&gt;
Run NPT for each lambda below. 2-5 ns for each lambda typically depending how complex your system (eg, 2ns is sufficient for K+ in water but a large ligand mayneed 5ns). Use BAR-NPT to analyze free energy between neighboring lambda (ignore first 200 ps). The toal FE is the sum of each step. You can check cumulative free energy convergence as a function of simulation time. Add more MD if needed.&lt;br /&gt;
&lt;br /&gt;
Repeat the set of simulations for ligand in solution and ligand itself in gas phase (not necessary if gas energy is 0 like single ion). The gas phase part should use the matching keywords as above (but no a-axis, Ewald, and time step for constant T MD is 1fs).&lt;br /&gt;
&lt;br /&gt;
Typical lambda schedule:&lt;br /&gt;
&lt;br /&gt;
 Ele L	Vdw L&lt;br /&gt;
 0	0&lt;br /&gt;
 0	0.4&lt;br /&gt;
 0	0.5&lt;br /&gt;
 0	0.525&lt;br /&gt;
 0	0.55&lt;br /&gt;
 0	0.575&lt;br /&gt;
 0	0.6&lt;br /&gt;
 0	0.625&lt;br /&gt;
 0	0.65&lt;br /&gt;
 0	0.675&lt;br /&gt;
 0	0.7&lt;br /&gt;
 0	0.725&lt;br /&gt;
 0	0.75&lt;br /&gt;
 0	0.775&lt;br /&gt;
 0	0.8&lt;br /&gt;
 0	0.9&lt;br /&gt;
 0	1&lt;br /&gt;
 0.1	1&lt;br /&gt;
 0.2	1&lt;br /&gt;
 0.3	1&lt;br /&gt;
 0.4	1&lt;br /&gt;
 0.5	1&lt;br /&gt;
 0.6	1&lt;br /&gt;
 0.7	1&lt;br /&gt;
 0.8	1&lt;br /&gt;
 0.9	1&lt;br /&gt;
&lt;br /&gt;
== binding free energy ==&lt;br /&gt;
&lt;br /&gt;
For host-guest binding, the simulation process similiar to above but involve two sets: one is host-guest-water, and the other guest-water. In both cases, guest is the ligand that is being scaled. For host-guest-water, one also applies&amp;amp;nbsp;a bond restraint between host and guest. This restraint can be turned off in one or two steps for lambda=1 but should be kept when L&amp;lt;1.&lt;br /&gt;
&lt;br /&gt;
 One way is to set the restraint K=0 when Lele, Lvdw=1, then K=90% when Lele=0.9/Lvdw=1, then K=100% when Lele=80%/Lvdw=1..... K=100% for all rest of L including L=0. &lt;br /&gt;
 The goal is for L=1 (host-guest full interaction), there is no restraint. when L=0, restraint is at 100%. The L=0 state seems &amp;quot;incorrect&amp;quot; due to the restraint but can be corrected (below).&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;bond&amp;quot; is between group of guest/ligand and group of host atoms. It is best to minimize the distance between the centers of the two groups (for sampling).  For example, if you are simulating an ion binding to a spherical cavity like CPP, you can pick 3 atoms on the host whose center is roughly the center of the ion; the restraint will be between the ion and this group. A correction is needed to &amp;quot;remove&amp;quot; the effect of this restraint and standard volume that goes into the final binding free energy.&#039;&#039;&#039;Tinker/utiity/freefix.f&#039;&#039;&#039; can be used to calculate the correction. Note this correction is typically positive (make binding energy less negative) since restraint leads to overestimation of binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*The correction for lambda=0 from RTln(C0*V), where C0=1/1660 A^3 and V=integrate{4*pi*r^2*exp[-k*(r-r0)^2/RT]dr}. k=15 kcal/mol in the example below. If you are using a harmonic restraint (example below) and the equilibrium r0 is not 0, numerical integration is necessary. A good reference is JACS v126, NO. 24, 2004.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brandon setup script can also set up protein-lig distance restraint now. Basically select a central heavy atom on ligand (or a function group) and another group of nearby 3-4 Ca from protein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Francis wrote a program to pick restraints based on Boresch paper. It can include additional angle and torsion restraints. However we found it is best to just use the simple distance restraints. The additional restraints may introduce bias towards ligand or host dynamics if not picked carefully.&amp;lt;/pre&amp;gt; [[Tinkergpu:get_rot_rest]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use distance restraint when lambda =1 for both ele and vdw, you can remove the effect of restraint from FEP or BAR; or you can avoid this correction if the restraint strength is set to 0 when the lambda =1 (gradually turned on when lambda-&amp;gt; 0 for both vdw and ele).&lt;br /&gt;
&lt;br /&gt;
 ligand                  -1 24, 26    &#039;&#039;#negative means range: atoms 1 to 24 plus 26&#039;&#039;&lt;br /&gt;
 vdw-lambda              1.00&lt;br /&gt;
 ele-lambda              0.50&lt;br /&gt;
 GROUP 1 -1 3 //ligand group&lt;br /&gt;
 GROUP 2 100, 102, 138 //protein group&lt;br /&gt;
 RESTRAIN-GROUPS  1  2  15.0  2.0 2.0&lt;br /&gt;
 Vdw-annihilation&lt;br /&gt;
 #lower bound &amp;amp; upper bound (2.0, 2.0) do not have to be the same. 15 is the force constant.&lt;br /&gt;
&lt;br /&gt;
Each set of lambda corresponds to one separate MD simulations of 5-10ns or longer. Save MD frames at every 3-5 ps. Use bar.x (bar_omm.x for GPU) to analyze the free energy dG between the neighboring lambda values.&lt;br /&gt;
&lt;br /&gt;
Unlike HFE, no need for gas-phase simulation since the end states of the ligand-water vs. ligand-protein cancels.&lt;br /&gt;
&lt;br /&gt;
Some scripts fron CW:&amp;amp;nbsp;[https://github.com/leucinw/ComputTools/tree/master/bardemo https://github.com/leucinw/ComputTools/tree/master/bardemo]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==ion HFE steps==&lt;br /&gt;
To compute ion hydration FE, &lt;br /&gt;
* prepare ion.xyz and waterbox.xyz. One key file containing all parameters (amoeba09.prm has ion and bunch of ions). If you have a new ion, add its parameters including multipoles, polarizability/damping, vdw &lt;br /&gt;
* water box should be ~50 A. A list of prebuilt water box (you many need to change atom types in xyz if you are using different key) https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#prebuilt_water_box &lt;br /&gt;
* use xyzedit to soak ion in water (see tutorial above about building and combining xyz)&lt;br /&gt;
* Run NPT for ~1ns to relax. See tutorial on this page about dynamics on GPU NPT keywords (using Langevin or MonteCarlo)&lt;br /&gt;
* Take the last relaxed structure to create inputs for HFE. Best to create a series of folders, one for each lambda with inputs and run scripts. See here for lambda schedule https://biomol.bme.utexas.edu/tinkergpu/index.php?title=Tinkergpu:Tinker-tut#HFE&lt;br /&gt;
* Get a list of nodes from Google spreadsheet of lab cluster. Ask for it if you can&#039;t find ~10 GPU nodes.&lt;br /&gt;
* each MD for ~2ns (add more if needed)&lt;br /&gt;
* Use a script to send jobs to each node. You can have 2 jobs concurrent on one GPU and rotate your jobs (~50 lambdas) through.&amp;lt;br /&amp;gt;&lt;br /&gt;
== hydration and binding free energy examples ==&lt;br /&gt;
&lt;br /&gt;
*Ethanol solvation free energy [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/01_solvation/Ethanol.zip download] &lt;br /&gt;
*PBP-phosphate binding [https://biomol.bme.utexas.edu/~zj2244/tutorial/free_energy/02_protein_ligand_binding/PBP_PO4.zip download] &lt;br /&gt;
&lt;br /&gt;
Please unzip the files and see README for instructions.&lt;br /&gt;
&lt;br /&gt;
== HFE and binding free energy calc using Brandon&#039;s script ==&lt;br /&gt;
&lt;br /&gt;
Set up from complex PDB and ligand xyz/key (POLTYE):&amp;amp;nbsp;[https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD https://github.com/bdw2292/AMOEBAAnnihilator/blob/main/README_HELP.MD]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*create conda env according to instructions on the annihilator github page &lt;br /&gt;
*make&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;something like&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;/home/eew947/.allpurpose.bashrc&amp;lt;/code&amp;gt;&amp;amp;nbsp;with your username replacing mine everywhere in it &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;ssh&amp;lt;/code&amp;gt;&amp;amp;nbsp;to node you want to start from &lt;br /&gt;
*&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;source ~/.allpurpose.bashrc&amp;lt;/code&amp;gt; &lt;br /&gt;
*prepare&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;annihilator.ini&amp;lt;/code&amp;gt; &lt;br /&gt;
*if you want to use daemon, you have to add the keyword for it in annihilator *ini and have it already running before starting annihilator &lt;br /&gt;
*start annihilator by&amp;amp;nbsp;&amp;lt;code data-stringify-type=&amp;quot;code&amp;quot;&amp;gt;nohup yourpathtoannihilatorhere/AMOEBAAnnihilatorModules/amoebaannihilator.py &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSRW ==&lt;br /&gt;
&lt;br /&gt;
Only implemented in tinker CPU. GPU version is under development.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
&lt;br /&gt;
== Force Field Explorer ==&lt;br /&gt;
&lt;br /&gt;
By Mike Schneider and Jay Ponder, [http://dasher.wustl.edu http://dasher.wustl.edu] Can visualize the xyz and arc (MD trajectory) files; create and start TINKER calcualtions&lt;br /&gt;
&lt;br /&gt;
== VMD ==&lt;br /&gt;
&lt;br /&gt;
Choose TINKER format when open a xyz file. Trajectory file (.arc) also works.&lt;br /&gt;
&lt;br /&gt;
== Pymol ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the xyz file can not be displayed correctly&lt;br /&gt;
&lt;br /&gt;
= Other resources =&lt;br /&gt;
&lt;br /&gt;
[https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials https://sites.google.com/site/biomolsimstw/workshop-materials/tutorials]&lt;br /&gt;
&lt;br /&gt;
Please email me if you have tutorials related to AMOEBA or Tinker you would like to share.&lt;br /&gt;
&lt;br /&gt;
= AMOEBA Force Field Papers: =&lt;br /&gt;
&lt;br /&gt;
===AMEOBA FF:===&lt;br /&gt;
&lt;br /&gt;
#Water model: Ren, P. Y.; Ponder, J. W., Polarizable atomic multipole water model for molecular mechanics simulation. Journal of Physical Chemistry B &#039;&#039;&#039;2003&#039;&#039;&#039;, 107 (24), 5933-5947. &lt;br /&gt;
#Small molecules: Ren, P.; Wu, C.; Ponder, J. W., Polarizable Atomic Multipole-based Molecular Mechanics for Organic Molecules. J Chem Theory Comput &#039;&#039;&#039;2011&#039;&#039;&#039;, 7 (10), 3143-3161. &lt;br /&gt;
#Proteins: Shi, Y.; Xia, Z.; Zhang, J.; Best, R.; Wu, C.; Ponder, J. W.; Ren, P., The Polarizable Atomic Multipole-based AMOEBA Force Field for Proteins. J Chem Theory Comput &#039;&#039;&#039;2013&#039;&#039;&#039;, 9 (9), 4046-4063. &lt;br /&gt;
#DMP/TMP/Base &amp;amp; nucleic acids:&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
*Zhang, C.; Lu, C.; Wang, Q.; Ponder, J. W.; Ren, P., Polarizable Multipole-Based Force Field for Dimethyl and Trimethyl Phosphate. J Chem Theory Comput 2015, 11 (11), 5326-39. &lt;br /&gt;
*Zhang, C.; Bell, D.; Harger, M.; Ren, P., Polarizable Multipole-Based Force Field for Aromatic Molecules and Nucleobases. J Chem Theory Comput 2017, 13 (2), 666-678. &lt;br /&gt;
*Zhang, C.; Lu, C.; Jing, Z.; Wu, C.; Piquemal, J. P.; Ponder, J. W.; Ren, P., AMOEBA Polarizable Atomic Multipole Force Field for Nucleic Acids. J Chem Theory Comput 2018, 14 (4), 2084-2108. &lt;br /&gt;
&lt;br /&gt;
===AMOEBA+ model (water published, small and biomolecules in progress)===&lt;br /&gt;
&lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., AMOEBA+ Classical Potential for Modeling Molecular Interactions. J Chem Theory Comput 2019. &lt;br /&gt;
#Liu, C.; Piquemal, J. P.; Ren, P., Implementation of Geometry-Dependent Charge Flux into the Polarizable AMOEBA+ Potential. J Phys Chem Lett 2019, 11, 419-426.&lt;br /&gt;
&lt;br /&gt;
===AMOEBA+NN model: incorporating Neural Networks===&lt;br /&gt;
&lt;br /&gt;
Wang, Y., et al. (2024). &amp;quot;Incorporating Neural Networks into the AMOEBA Polarizable Force Field.&amp;quot; The Journal of Physical Chemistry B 128(10): 2381-2388.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==Lectures on Force Field, AMOEBA, AMOEBA+==&lt;br /&gt;
Under &#039;&#039;&#039;Adv Mol Modeling&#039;&#039;&#039; menu:&lt;br /&gt;
 [[Tutorial:amm#Molecular_Mechanics_and_Force_Fields_(AMOEBA,_AMOEBA+) | Link]]&lt;br /&gt;
&lt;br /&gt;
= More Explicit Free Energy Calc Steps - Brandon Walker =&lt;br /&gt;
&lt;br /&gt;
Old/obsolete description here: [[Tinker-tut:free_eng_Bbdw|Obsolete description here]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2039</id>
		<title>Lab:newuser</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2039"/>
		<updated>2024-06-27T19:31:55Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* login */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= How to use lab cluster =&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
If you are new to Linux: [https://ryanstutorials.net/linuxtutorial/ https://ryanstutorials.net/linuxtutorial/]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You need an account to login to lab cluster to use various software and perform calculations. We can no longer log in remotely using password. SSH key is required. &#039;&#039;&#039;&#039;&#039;You have to come to the lab to do the below in person. If not, ask admin to do it for you.&#039;&#039;&#039;&#039;&#039;&amp;amp;nbsp;Once you receivd an account and temp password, log in at any workstation &#039;&#039;&#039;in the lab&#039;&#039;&#039;, and set up your ssh key:&lt;br /&gt;
&lt;br /&gt;
These steps should have been done for you by admin. &lt;br /&gt;
 cd ~&lt;br /&gt;
 ssh-keygen -t rsa -b 4096 (then hit enter all the way)&lt;br /&gt;
 cd .ssh &lt;br /&gt;
 cat id_rsa.pub &amp;gt;&amp;gt; authorized_keys&lt;br /&gt;
 chmod 600  authorized_keys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the key exist in pairs, one is public (id_rsa_pub) and another is private.&lt;br /&gt;
&lt;br /&gt;
Then &amp;quot;ssh bme-uranus”. Use &amp;quot;passwd&amp;quot; to update your password to something very secure. The bare command is sufficient; prompts will open up for old and new passwords. Your changes will be propagated to all nodes automatically.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After you have logged into uranus, obtain a list of all known nodes (hostnames, [https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt]) and ssh from uranus to each node. There will be a prompt that opens asking if you would like to add that hostname to list of known hosts, just type yes for each prompt.&lt;br /&gt;
&lt;br /&gt;
There is a Google spreadsheet for signing up to use different CPUs and GPUs.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login from your laptop on and off campus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You will need a ssh client to remote log into our computer cluster.&lt;br /&gt;
&lt;br /&gt;
You also need UT VPN to connect from off campus. On campus, you don&#039;t need this.&lt;br /&gt;
&lt;br /&gt;
If you use Mac or Linux, ssh client is built-in (via terminal). If you use Windows, you can install ssh clients like mobaxterm [https://mobaxterm.mobatek.net/ https://mobaxterm.mobatek.net/], Windows subsystem for linux (ubutu/Debian etc), or cygwin. You need to create ssh keys (&#039;&#039;&#039;private and public pair&#039;&#039;&#039;) on your own computer (e.g. laptop).Mobaxterm has tool for this (Tools/mobakeygen). If you use WSL or Mac, the instruction is the same as above (ssh-keygen). &#039;&#039;&#039;Once you generate the key pairs, save them somewhere you know.&#039;&#039;&#039; Then append the pub key from your laptop (client) to &amp;quot;authorized_keys&amp;quot; on lab computer (remote server) in your .ssh folder. On your laptop, you will need specify the matching private key if you use mobaxterm (otherwise it will be found in ~/.ssh if you use Mac or linux). Again, if you cannot come to lab in person, send me the public key (via link to clound drive, not explicitly in email)&amp;amp;nbsp;and we will append for you.&lt;br /&gt;
&lt;br /&gt;
Remotely, you can log into &#039;&#039;&#039;bme-jupiter.bme.utexas.edu&#039;&#039;&#039; or &#039;&#039;&#039;bme-sugar.bme.utexas.edu or &#039;&#039;&#039;All the other nodes/server are blocked. From there, you can ssh into uranus and nodes behind uranus (see cluster structure at the bottom of this page). If the username you have on your device does not match your cluster username, you will have to preface this address &amp;lt;span style=&amp;quot;background-color:#f1c40f;&amp;quot;&amp;gt;with your username &amp;lt;/span&amp;gt;(&#039;&#039;e.g.&#039;&#039; &amp;lt;span style=&amp;quot;background-color:#f39c12;&amp;quot;&amp;gt;longhorn42@bme-jupiter.bme.utexas.edu&amp;lt;/span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
From off campus, you need to use UT VPN to ssh into jupiter or sugar.&lt;br /&gt;
https://wikis.utexas.edu/display/engritgpublic/Connecting+to+the+University+of+Texas+VPN&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More instructions if you are using mobaxterm:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* make sure connected via VPN&lt;br /&gt;
* Start mobxterm and use Tools/mobakeygen to generate a pair of public and private keys. Save both.&lt;br /&gt;
* Append your public key to .ssh/authprized_keys (you can ask for help if you are remote)&lt;br /&gt;
* Create a new session in mobaxterm, under Advanced ssh setting, host: bme-jupiter.bme.utexas.edu, username: xxx, &#039;&#039;&#039;and specify your private key&#039;&#039;&#039; you saved above.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;your home dir is on uranus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
uranus is now obsolete. Uranus replaced uranus as the header node.&lt;br /&gt;
&lt;br /&gt;
bme-uranus.bme.utexas.edu (node199, 10.0.0.199) is the header node of our computer cluster where all your home directory and files are stored. Your home directory (echo $HOME) is located either in /home or /users which is physically located on uranus . It can be accessed from any nodes and workstations in the lab. From uranus, you can start your job by doing &amp;quot;ssh node120 xxx” where xxx is your simulation script. You can write your own script to submit a bunch of job to these nodes (check the availability and skip if the node is busy). Your home directory is shared among uranus and all nodes vis NFS.&lt;br /&gt;
&lt;br /&gt;
(More about lab cluster structure at the end of page)&lt;br /&gt;
&lt;br /&gt;
Your home directory has a limit (quota) on space and file number and you won&#039;t be able to create new files once it is reached.&lt;br /&gt;
&lt;br /&gt;
Even you see your home folder on all WS/nodes in the lab but they are actually doing so remotely (hence use /scratch that is local on each node for serious jobs).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;where to run simulations &amp;amp; analysis&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The home dir on uranus is accessible on all nodes. But when you perform calculations on the nodes/WS in your home directory, it is actually accessing the files on uranus through network. It is convenient to run relatively short simulations, store the output files and perform quick analysis directly in your home directory. But because all members in the lab share home dir on uranus, it could stress out the system if several demanding simulations/trajectory analyses are performed at the same time on files in your home dir on uranus.&lt;br /&gt;
&lt;br /&gt;
So for demanding calculations, please use &#039;&#039;&#039;/work (mounted from sun.bme.utexas.edu) and /work2 (from uranus.bme.utexas.edu) &#039;&#039;&#039;as working directories. &amp;quot;sun and uranus&amp;quot; are also shared among all nodes like uranus. But this way we spread out the burden among 3 servers. If you ahve an active projecta nd expect to produce sunstaitnal amount files, let me know and I will created folder for you on /work and /work2. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#f39c12&amp;quot;&amp;gt;Keep uranus(your home directory) clean and efficient for everyone including yourself.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For QM and highly disk intensive tasks, we also use local &amp;quot;&#039;&#039;&#039;/scratch&#039;&#039;&#039;&amp;quot; disk. This space is large (100s GB) but is &amp;quot;local&amp;quot; meaning only accessible on specific node (after you ssh into it).&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;When submitting a command, use the following. This will run it in the background and redirect output that would print to the screen to a file &amp;quot;nohup.out&amp;quot;. This prevents it from terminating when you logout or close the terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;nohup your_command &amp;amp;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;less +F file_name&amp;quot; to have constantly updated end of file on screen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster usage monitoring and signup ==&lt;br /&gt;
&lt;br /&gt;
The node activities can be monitored here:&lt;br /&gt;
&lt;br /&gt;
 https://biomolmd.org/pren/nodes.html&lt;br /&gt;
 https://biomolmd.org/liuchw/jobs.txt&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#ffff33;&amp;quot;&amp;gt;Complete CPU/GPU usage &amp;amp; sign up spreadsheet&amp;lt;/span&amp;gt; &#039;&#039;&#039;(email pren to request permission to edit): [https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
We don’t have a job queuing system (yet) so you just log into a node to run your job.&lt;br /&gt;
&lt;br /&gt;
 Use &amp;quot;top&amp;quot; to check the load on a node. 600% means 6 cores are fully loaded.&lt;br /&gt;
 &amp;quot;less /proc/cpuinfo&amp;quot; to check how many CPU cores/threads on a node&lt;br /&gt;
 &amp;quot;free -g&amp;quot; to check free memory (esp. for QM jobs). The line &amp;quot;-/+ buffers/cache:&amp;quot; has the real number for free space&lt;br /&gt;
 &amp;quot;echo &amp;gt; large_file_name&amp;quot; to empty a large file quickly. rm can be slow&lt;br /&gt;
 &amp;quot;df -h&amp;quot; to check available storage (disk space)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
More tips about Lnux commands and uitlies:&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
All home directories (/home, /users, /opt, /work, /work2) are backed up twice a week for ~ 2 weeks on bigdata.bme.utexas.edu. If you need to recover any files from last couple of&amp;amp;nbsp;weeks, you should be able to find them there. Log into bigdata, cd /bigdata/renlab/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cluster structure ==&lt;br /&gt;
&lt;br /&gt;
uranus.bme.utexas.edu is the header node for all computing nodes (nodexxx) that can only be accessed from uranus. The /home, /users, /opt folders are all part of uranus file system. The computing nodes have private IP address so can not be seen from outside including your WS or laptop. Each mode has a large local /scratch&amp;quot; folder that writable by everyone. &amp;quot;sun and uranus&amp;quot; are another two large servers mounted as /work and /work2 on each WS and computing node. You can use them just like the home dir. bigdata is the backup server.&lt;br /&gt;
&lt;br /&gt;
Read the pdf below for an illustration (replace NOVA with uranus)&lt;br /&gt;
&lt;br /&gt;
Current login nodes are bme-jupiter and bme-sugar and UT VPN is required&lt;br /&gt;
&lt;br /&gt;
[[File:LabCluster.pdf|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2038</id>
		<title>Lab:newuser</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2038"/>
		<updated>2024-06-27T19:25:26Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* login from your laptop on and off campus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= How to use lab cluster =&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
If you are new to Linux: [https://ryanstutorials.net/linuxtutorial/ https://ryanstutorials.net/linuxtutorial/]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You need an account to login to lab cluster to use various software and perform calculations. We can no longer log in remotely using password. SSH key is required. &#039;&#039;&#039;&#039;&#039;You have to come to the lab to do the below in person. If not, ask admin to do it for you.&#039;&#039;&#039;&#039;&#039;&amp;amp;nbsp;Once you receivd an account and temp password, log in at any workstation &#039;&#039;&#039;in the lab&#039;&#039;&#039;, and set up your ssh key:&lt;br /&gt;
&lt;br /&gt;
These steps should have been done for you by admin. &lt;br /&gt;
 cd ~&lt;br /&gt;
 ssh-keygen -t rsa -b 4096 (then hit enter all the way)&lt;br /&gt;
 cd .ssh &lt;br /&gt;
 cat id_rsa.pub &amp;gt;&amp;gt; authorized_keys&lt;br /&gt;
 chmod 600  authorized_keys&lt;br /&gt;
&lt;br /&gt;
Then &amp;quot;ssh bme-uranus”. Use &amp;quot;passwd&amp;quot; to update your password to something very secure. The bare command is sufficient; prompts will open up for old and new passwords. Your changes will be propagated to all nodes automatically.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After you have logged into uranus, obtain a list of all known nodes (hostnames, [https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt]) and ssh from uranus to each node. There will be a prompt that opens asking if you would like to add that hostname to list of known hosts, just type yes for each prompt.&lt;br /&gt;
&lt;br /&gt;
There is a Google spreadsheet for signing up to use different CPUs and GPUs.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login from your laptop on and off campus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You will need a ssh client to remote log into our computer cluster.&lt;br /&gt;
&lt;br /&gt;
You also need UT VPN to connect from off campus. On campus, you don&#039;t need this.&lt;br /&gt;
&lt;br /&gt;
If you use Mac or Linux, ssh client is built-in (via terminal). If you use Windows, you can install ssh clients like mobaxterm [https://mobaxterm.mobatek.net/ https://mobaxterm.mobatek.net/], Windows subsystem for linux (ubutu/Debian etc), or cygwin. You need to create ssh keys (private and public pair) on your own computer (e.g. laptop).Mobaxterm has tool for this. If you use WSL or Mac, the instruction is the same as above (ssh-keygen). Then append the pub key from your laptop (client) to &amp;quot;authorized_keys&amp;quot; on lab workstation (remote server) in your .ssh folder. Again, if you can not come to lab in person, send me the public key (via link to clound drive, not explicitly in email)&amp;amp;nbsp;and we will append for you.&lt;br /&gt;
&lt;br /&gt;
Remotely, you can log into &#039;&#039;&#039;bme-jupiter.bme.utexas.edu&#039;&#039;&#039; or &#039;&#039;&#039;bme-sugar.bme.utexas.edu or &#039;&#039;&#039;All the other nodes/server are blocked. From there, you can ssh into uranus and nodes behind uranus (see cluster structure at the bottom of this page). If the username you have on your device does not match your cluster username, you will have to preface this address &amp;lt;span style=&amp;quot;background-color:#f1c40f;&amp;quot;&amp;gt;with your username &amp;lt;/span&amp;gt;(&#039;&#039;e.g.&#039;&#039; &amp;lt;span style=&amp;quot;background-color:#f39c12;&amp;quot;&amp;gt;longhorn42@bme-jupiter.bme.utexas.edu&amp;lt;/span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
From off campus, you need to use UT VPN to ssh into jupiter or sugar.&lt;br /&gt;
https://wikis.utexas.edu/display/engritgpublic/Connecting+to+the+University+of+Texas+VPN&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More instructions if you are using mobaxterm:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* make sure connected via VPN&lt;br /&gt;
* Start mobxterm and use Tools/mobakeygen to generate a pair of public and private keys. Save both.&lt;br /&gt;
* Append your public key to .ssh/authprized_keys (you can ask for help if you are remote)&lt;br /&gt;
* Create a new session in mobaxterm, under Advanced ssh setting, host: bme-jupiter.bme.utexas.edu, username: xxx, &#039;&#039;&#039;and specify your private key&#039;&#039;&#039; you saved above.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;your home dir is on uranus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
uranus is now obsolete. Uranus replaced uranus as the header node.&lt;br /&gt;
&lt;br /&gt;
bme-uranus.bme.utexas.edu (node199, 10.0.0.199) is the header node of our computer cluster where all your home directory and files are stored. Your home directory (echo $HOME) is located either in /home or /users which is physically located on uranus . It can be accessed from any nodes and workstations in the lab. From uranus, you can start your job by doing &amp;quot;ssh node120 xxx” where xxx is your simulation script. You can write your own script to submit a bunch of job to these nodes (check the availability and skip if the node is busy). Your home directory is shared among uranus and all nodes vis NFS.&lt;br /&gt;
&lt;br /&gt;
(More about lab cluster structure at the end of page)&lt;br /&gt;
&lt;br /&gt;
Your home directory has a limit (quota) on space and file number and you won&#039;t be able to create new files once it is reached.&lt;br /&gt;
&lt;br /&gt;
Even you see your home folder on all WS/nodes in the lab but they are actually doing so remotely (hence use /scratch that is local on each node for serious jobs).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;where to run simulations &amp;amp; analysis&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The home dir on uranus is accessible on all nodes. But when you perform calculations on the nodes/WS in your home directory, it is actually accessing the files on uranus through network. It is convenient to run relatively short simulations, store the output files and perform quick analysis directly in your home directory. But because all members in the lab share home dir on uranus, it could stress out the system if several demanding simulations/trajectory analyses are performed at the same time on files in your home dir on uranus.&lt;br /&gt;
&lt;br /&gt;
So for demanding calculations, please use &#039;&#039;&#039;/work (mounted from sun.bme.utexas.edu) and /work2 (from uranus.bme.utexas.edu) &#039;&#039;&#039;as working directories. &amp;quot;sun and uranus&amp;quot; are also shared among all nodes like uranus. But this way we spread out the burden among 3 servers. If you ahve an active projecta nd expect to produce sunstaitnal amount files, let me know and I will created folder for you on /work and /work2. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#f39c12&amp;quot;&amp;gt;Keep uranus(your home directory) clean and efficient for everyone including yourself.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For QM and highly disk intensive tasks, we also use local &amp;quot;&#039;&#039;&#039;/scratch&#039;&#039;&#039;&amp;quot; disk. This space is large (100s GB) but is &amp;quot;local&amp;quot; meaning only accessible on specific node (after you ssh into it).&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;When submitting a command, use the following. This will run it in the background and redirect output that would print to the screen to a file &amp;quot;nohup.out&amp;quot;. This prevents it from terminating when you logout or close the terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;nohup your_command &amp;amp;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;less +F file_name&amp;quot; to have constantly updated end of file on screen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster usage monitoring and signup ==&lt;br /&gt;
&lt;br /&gt;
The node activities can be monitored here:&lt;br /&gt;
&lt;br /&gt;
 https://biomolmd.org/pren/nodes.html&lt;br /&gt;
 https://biomolmd.org/liuchw/jobs.txt&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#ffff33;&amp;quot;&amp;gt;Complete CPU/GPU usage &amp;amp; sign up spreadsheet&amp;lt;/span&amp;gt; &#039;&#039;&#039;(email pren to request permission to edit): [https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
We don’t have a job queuing system (yet) so you just log into a node to run your job.&lt;br /&gt;
&lt;br /&gt;
 Use &amp;quot;top&amp;quot; to check the load on a node. 600% means 6 cores are fully loaded.&lt;br /&gt;
 &amp;quot;less /proc/cpuinfo&amp;quot; to check how many CPU cores/threads on a node&lt;br /&gt;
 &amp;quot;free -g&amp;quot; to check free memory (esp. for QM jobs). The line &amp;quot;-/+ buffers/cache:&amp;quot; has the real number for free space&lt;br /&gt;
 &amp;quot;echo &amp;gt; large_file_name&amp;quot; to empty a large file quickly. rm can be slow&lt;br /&gt;
 &amp;quot;df -h&amp;quot; to check available storage (disk space)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
More tips about Lnux commands and uitlies:&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
All home directories (/home, /users, /opt, /work, /work2) are backed up twice a week for ~ 2 weeks on bigdata.bme.utexas.edu. If you need to recover any files from last couple of&amp;amp;nbsp;weeks, you should be able to find them there. Log into bigdata, cd /bigdata/renlab/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cluster structure ==&lt;br /&gt;
&lt;br /&gt;
uranus.bme.utexas.edu is the header node for all computing nodes (nodexxx) that can only be accessed from uranus. The /home, /users, /opt folders are all part of uranus file system. The computing nodes have private IP address so can not be seen from outside including your WS or laptop. Each mode has a large local /scratch&amp;quot; folder that writable by everyone. &amp;quot;sun and uranus&amp;quot; are another two large servers mounted as /work and /work2 on each WS and computing node. You can use them just like the home dir. bigdata is the backup server.&lt;br /&gt;
&lt;br /&gt;
Read the pdf below for an illustration (replace NOVA with uranus)&lt;br /&gt;
&lt;br /&gt;
Current login nodes are bme-jupiter and bme-sugar and UT VPN is required&lt;br /&gt;
&lt;br /&gt;
[[File:LabCluster.pdf|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2037</id>
		<title>Lab:newuser</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Lab:newuser&amp;diff=2037"/>
		<updated>2024-06-27T19:24:46Z</updated>

		<summary type="html">&lt;p&gt;Pren: /* login from your laptop on and off campus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= How to use lab cluster =&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
If you are new to Linux: [https://ryanstutorials.net/linuxtutorial/ https://ryanstutorials.net/linuxtutorial/]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You need an account to login to lab cluster to use various software and perform calculations. We can no longer log in remotely using password. SSH key is required. &#039;&#039;&#039;&#039;&#039;You have to come to the lab to do the below in person. If not, ask admin to do it for you.&#039;&#039;&#039;&#039;&#039;&amp;amp;nbsp;Once you receivd an account and temp password, log in at any workstation &#039;&#039;&#039;in the lab&#039;&#039;&#039;, and set up your ssh key:&lt;br /&gt;
&lt;br /&gt;
These steps should have been done for you by admin. &lt;br /&gt;
 cd ~&lt;br /&gt;
 ssh-keygen -t rsa -b 4096 (then hit enter all the way)&lt;br /&gt;
 cd .ssh &lt;br /&gt;
 cat id_rsa.pub &amp;gt;&amp;gt; authorized_keys&lt;br /&gt;
 chmod 600  authorized_keys&lt;br /&gt;
&lt;br /&gt;
Then &amp;quot;ssh bme-uranus”. Use &amp;quot;passwd&amp;quot; to update your password to something very secure. The bare command is sufficient; prompts will open up for old and new passwords. Your changes will be propagated to all nodes automatically.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After you have logged into uranus, obtain a list of all known nodes (hostnames, [https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt https://github.com/bdw2292/Ren-Lab-Daemon/blob/main/nodes.txt]) and ssh from uranus to each node. There will be a prompt that opens asking if you would like to add that hostname to list of known hosts, just type yes for each prompt.&lt;br /&gt;
&lt;br /&gt;
There is a Google spreadsheet for signing up to use different CPUs and GPUs.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;login from your laptop on and off campus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
You will need a ssh client to remote log into our computer cluster.&lt;br /&gt;
&lt;br /&gt;
You also need UT VPN to connect from off campus. On campus, you don&#039;t need this.&lt;br /&gt;
&lt;br /&gt;
If you use Mac or Linux, ssh client is built-in (via terminal). If you use Windows, you can install ssh clients like mobaxterm [https://mobaxterm.mobatek.net/ https://mobaxterm.mobatek.net/], Windows subsystem for linux (ubutu/Debian etc), or cygwin. You need to create ssh keys (private and public pair) on your own computer (e.g. laptop).Mobaxterm has tool for this. If you use WSL or Mac, the instruction is the same as above (ssh-keygen). Then append the pub key from your laptop (client) to &amp;quot;authorized_keys&amp;quot; on lab workstation (remote server) in your .ssh folder. Again, if you can not come to lab in person, send me the public key (via link to clound drive, not explicitly in email)&amp;amp;nbsp;and we will append for you.&lt;br /&gt;
&lt;br /&gt;
Remotely, you can log into &#039;&#039;&#039;bme-jupiter.bme.utexas.edu&#039;&#039;&#039; or &#039;&#039;&#039;bme-sugar.bme.utexas.edu or &#039;&#039;&#039;All the other nodes/server are blocked. From there, you can ssh into uranus and nodes behind uranus (see cluster structure at the bottom of this page). If the username you have on your device does not match your cluster username, you will have to preface this address &amp;lt;span style=&amp;quot;background-color:#f1c40f;&amp;quot;&amp;gt;with your username &amp;lt;/span&amp;gt;(&#039;&#039;e.g.&#039;&#039; &amp;lt;span style=&amp;quot;background-color:#f39c12;&amp;quot;&amp;gt;longhorn42@bme-jupiter.bme.utexas.edu&amp;lt;/span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
From off campus, you need to use UT VPN to ssh into jupiter or sugar.&lt;br /&gt;
https://wikis.utexas.edu/display/engritgpublic/Connecting+to+the+University+of+Texas+VPN&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More instructions if you are using mobaxterm:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* make sure connected via VPN&lt;br /&gt;
* Start mobxterm and use Tools/mobakeygen to generate a pair of public and private keys. Save both.&lt;br /&gt;
* Append your public key to .ssh/authprized_keys&lt;br /&gt;
* Create a new session in mobaxterm, under Advanced ssh setting, host: bme-jupiter.bme.utexas.edu, username: xxx, &#039;&#039;&#039;and specify your private key&#039;&#039;&#039; you saved above.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;your home dir is on uranus&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
uranus is now obsolete. Uranus replaced uranus as the header node.&lt;br /&gt;
&lt;br /&gt;
bme-uranus.bme.utexas.edu (node199, 10.0.0.199) is the header node of our computer cluster where all your home directory and files are stored. Your home directory (echo $HOME) is located either in /home or /users which is physically located on uranus . It can be accessed from any nodes and workstations in the lab. From uranus, you can start your job by doing &amp;quot;ssh node120 xxx” where xxx is your simulation script. You can write your own script to submit a bunch of job to these nodes (check the availability and skip if the node is busy). Your home directory is shared among uranus and all nodes vis NFS.&lt;br /&gt;
&lt;br /&gt;
(More about lab cluster structure at the end of page)&lt;br /&gt;
&lt;br /&gt;
Your home directory has a limit (quota) on space and file number and you won&#039;t be able to create new files once it is reached.&lt;br /&gt;
&lt;br /&gt;
Even you see your home folder on all WS/nodes in the lab but they are actually doing so remotely (hence use /scratch that is local on each node for serious jobs).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;where to run simulations &amp;amp; analysis&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The home dir on uranus is accessible on all nodes. But when you perform calculations on the nodes/WS in your home directory, it is actually accessing the files on uranus through network. It is convenient to run relatively short simulations, store the output files and perform quick analysis directly in your home directory. But because all members in the lab share home dir on uranus, it could stress out the system if several demanding simulations/trajectory analyses are performed at the same time on files in your home dir on uranus.&lt;br /&gt;
&lt;br /&gt;
So for demanding calculations, please use &#039;&#039;&#039;/work (mounted from sun.bme.utexas.edu) and /work2 (from uranus.bme.utexas.edu) &#039;&#039;&#039;as working directories. &amp;quot;sun and uranus&amp;quot; are also shared among all nodes like uranus. But this way we spread out the burden among 3 servers. If you ahve an active projecta nd expect to produce sunstaitnal amount files, let me know and I will created folder for you on /work and /work2. &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#f39c12&amp;quot;&amp;gt;Keep uranus(your home directory) clean and efficient for everyone including yourself.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For QM and highly disk intensive tasks, we also use local &amp;quot;&#039;&#039;&#039;/scratch&#039;&#039;&#039;&amp;quot; disk. This space is large (100s GB) but is &amp;quot;local&amp;quot; meaning only accessible on specific node (after you ssh into it).&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;When submitting a command, use the following. This will run it in the background and redirect output that would print to the screen to a file &amp;quot;nohup.out&amp;quot;. This prevents it from terminating when you logout or close the terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;nohup your_command &amp;amp;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;less +F file_name&amp;quot; to have constantly updated end of file on screen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Lab cluster usage monitoring and signup ==&lt;br /&gt;
&lt;br /&gt;
The node activities can be monitored here:&lt;br /&gt;
&lt;br /&gt;
 https://biomolmd.org/pren/nodes.html&lt;br /&gt;
 https://biomolmd.org/liuchw/jobs.txt&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;background-color:#ffff33;&amp;quot;&amp;gt;Complete CPU/GPU usage &amp;amp; sign up spreadsheet&amp;lt;/span&amp;gt; &#039;&#039;&#039;(email pren to request permission to edit): [https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing https://docs.google.com/spreadsheets/d/1EOlUwFpdNU2uBZ5XrHSvZnRYCUCOw5tCSkFisTm3big/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
We don’t have a job queuing system (yet) so you just log into a node to run your job.&lt;br /&gt;
&lt;br /&gt;
 Use &amp;quot;top&amp;quot; to check the load on a node. 600% means 6 cores are fully loaded.&lt;br /&gt;
 &amp;quot;less /proc/cpuinfo&amp;quot; to check how many CPU cores/threads on a node&lt;br /&gt;
 &amp;quot;free -g&amp;quot; to check free memory (esp. for QM jobs). The line &amp;quot;-/+ buffers/cache:&amp;quot; has the real number for free space&lt;br /&gt;
 &amp;quot;echo &amp;gt; large_file_name&amp;quot; to empty a large file quickly. rm can be slow&lt;br /&gt;
 &amp;quot;df -h&amp;quot; to check available storage (disk space)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
More tips about Lnux commands and uitlies:&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing https://docs.google.com/document/d/1cnmSItdRXDBcpVBGhwDahJVJ2jeh4l2oDVpMBLtlySE/edit?usp=sharing]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
All home directories (/home, /users, /opt, /work, /work2) are backed up twice a week for ~ 2 weeks on bigdata.bme.utexas.edu. If you need to recover any files from last couple of&amp;amp;nbsp;weeks, you should be able to find them there. Log into bigdata, cd /bigdata/renlab/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cluster structure ==&lt;br /&gt;
&lt;br /&gt;
uranus.bme.utexas.edu is the header node for all computing nodes (nodexxx) that can only be accessed from uranus. The /home, /users, /opt folders are all part of uranus file system. The computing nodes have private IP address so can not be seen from outside including your WS or laptop. Each mode has a large local /scratch&amp;quot; folder that writable by everyone. &amp;quot;sun and uranus&amp;quot; are another two large servers mounted as /work and /work2 on each WS and computing node. You can use them just like the home dir. bigdata is the backup server.&lt;br /&gt;
&lt;br /&gt;
Read the pdf below for an illustration (replace NOVA with uranus)&lt;br /&gt;
&lt;br /&gt;
Current login nodes are bme-jupiter and bme-sugar and UT VPN is required&lt;br /&gt;
&lt;br /&gt;
[[File:LabCluster.pdf|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2036</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2036"/>
		<updated>2024-06-16T15:14:41Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://biomolmd.org/mw/images/5/56/Program.pdf Program]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2035</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2035"/>
		<updated>2024-06-16T15:13:21Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[https://biomolmd.org/mw/images/5/56/Program.pdf|Program]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2034</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2034"/>
		<updated>2024-06-16T15:11:54Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Program&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[File:Program.pdf]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2033</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2033"/>
		<updated>2024-06-16T15:10:27Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Program&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[:File:Program.pdf]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2032</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2032"/>
		<updated>2024-06-16T15:09:50Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|none]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Program&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Program.pdf]]&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=File:Program.pdf&amp;diff=2031</id>
		<title>File:Program.pdf</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=File:Program.pdf&amp;diff=2031"/>
		<updated>2024-06-16T15:08:37Z</updated>

		<summary type="html">&lt;p&gt;Pren: Tinker 2024 program&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tinker 2024 program&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2030</id>
		<title>Tinkermeeting:tinkermeeting2024</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2024&amp;diff=2030"/>
		<updated>2024-06-16T15:07:15Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://molecolab.dcci.unipi.it/program-tinker.html&lt;br /&gt;
&lt;br /&gt;
[[File:Tinker2024 Group Picture.jpg|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Program&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2029</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2029"/>
		<updated>2024-06-16T15:06:10Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|thumb|Tinker workshop 2023|none]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2028</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2028"/>
		<updated>2024-06-16T15:05:34Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|left|thumb|Tinker workshop 2023]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2027</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2027"/>
		<updated>2024-06-16T15:05:06Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|left|thumb|Tinker workshop 2023]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2026</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2026"/>
		<updated>2024-06-16T15:04:43Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|left|thumb|Tinker workshop 2023]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2025</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2025"/>
		<updated>2024-06-16T15:04:23Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|left|thumb|Tinker workshop 2023]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2024</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2024"/>
		<updated>2024-06-16T15:04:14Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2023-Tinker-Workshop.jpg|left|thumb|Tinker workshop 2023]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=File:2023-Tinker-Workshop.jpg&amp;diff=2023</id>
		<title>File:2023-Tinker-Workshop.jpg</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=File:2023-Tinker-Workshop.jpg&amp;diff=2023"/>
		<updated>2024-06-16T15:03:36Z</updated>

		<summary type="html">&lt;p&gt;Pren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tinker 2023 meeting&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
	<entry>
		<id>https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2022</id>
		<title>Tinkermeeting:tinkermeeting2023</title>
		<link rel="alternate" type="text/html" href="https://biomolmd.org/mw/index.php?title=Tinkermeeting:tinkermeeting2023&amp;diff=2022"/>
		<updated>2024-06-16T15:00:40Z</updated>

		<summary type="html">&lt;p&gt;Pren: Tinker2023&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ATTENDEE LIST FOR TINKER DEVELOPER WORKSHOP, JUNE 15-17 2023, SAINT LOUIS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cole Allen            coleallen@utexas.edu                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Felix Aviat           felixaviat@gmail.com                  NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Bernie Brooks         brb@nhlbi.nih.com                     NIH NHLBI&lt;br /&gt;
&lt;br /&gt;
Dave Cerutti          david.cerutti@psivant.com             Psivant&lt;br /&gt;
&lt;br /&gt;
Moses Chung           kchung25@wustl.edu                    WashU&lt;br /&gt;
&lt;br /&gt;
Andrés Cisneros       andres@utdallas.edu                   UT Dallas&lt;br /&gt;
&lt;br /&gt;
Rae Corrigan          rae-corrigan@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Eric Dybeck           eric.dybeck@gmail.com                 Pfizer&lt;br /&gt;
&lt;br /&gt;
Peter Eastman         peastman@stanford.edu                 Stanford&lt;br /&gt;
&lt;br /&gt;
Rose Gogal            rose-gogal@uiowa.edu                  Iowa&lt;br /&gt;
&lt;br /&gt;
Hatice Gokcan         hgokcan@andrew.cmu.edu                CMU&lt;br /&gt;
&lt;br /&gt;
Nocolai Gouraud       nocolai@qubit-pharmaceuticals.com     Qubit&lt;br /&gt;
&lt;br /&gt;
Nohad Gresh           gresh@lct.jussieu.fr                  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Alan Grossfield       alan_grossfield@urmc.rochester.edu    Rochester&lt;br /&gt;
&lt;br /&gt;
Dave Hardy            dhardy@ks.uiuc.edu                    Illinois&lt;br /&gt;
&lt;br /&gt;
Ryan Hayes            rhayes1@uci.edu                       UC Irvine&lt;br /&gt;
&lt;br /&gt;
Teresa Head-Gordon    thg@berkeley.edu                      UC Berkeley&lt;br /&gt;
&lt;br /&gt;
Chris Ho              cho@newdrugdesign.com                 Qubit&lt;br /&gt;
&lt;br /&gt;
Théo Jeffrelot-Inizan theo.jaffrelot-inizan@lct.jussieu.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Francis Jing          francijing@gmail.com                  Qubit&lt;br /&gt;
&lt;br /&gt;
Luc-Henri Jolly       lhj@ip2ct.upmc.fr                     Sorbonne&lt;br /&gt;
&lt;br /&gt;
Léa El Khoury         lea@qubit-pharmaceuticals.com         Qubit&lt;br /&gt;
&lt;br /&gt;
Anmol Kumar           anmol@outerbanks.umaryland.edu        UMD Baltimore&lt;br /&gt;
&lt;br /&gt;
Louis Lagardère       louis.lagardere@gmail.com             Sorbonne&lt;br /&gt;
&lt;br /&gt;
Filippo Lipparini     filippo.lipparini@unipi.it            Pisa&lt;br /&gt;
&lt;br /&gt;
Chengwen Liu          liuchw2010@gmail.com                  UT Austin&lt;br /&gt;
&lt;br /&gt;
Ao Ma                 aoma@uic.edu                          UI Chicago&lt;br /&gt;
&lt;br /&gt;
Matthieu Montes       matthieu.montes@cnam.fr               CNAM&lt;br /&gt;
&lt;br /&gt;
Jorge Nochebuena      jorge.nochebuena@utdallas.edu         UT Dallas&lt;br /&gt;
&lt;br /&gt;
Lalith Perera         pereral2@niehs.nih.gov                NIEHS NIH&lt;br /&gt;
&lt;br /&gt;
Jean-Philip Piquemal  jean-philip.piquemal@sorbonne-universite.fr  Sorbonne&lt;br /&gt;
&lt;br /&gt;
Thomas Plé            thomas.ple@hotmail.fr                 Sorbonne&lt;br /&gt;
&lt;br /&gt;
Jay Ponder            ponder@dasher.wustl.edu               WashU&lt;br /&gt;
&lt;br /&gt;
Pengyu Ren            pren@utexas.edu                       UT Austin&lt;br /&gt;
&lt;br /&gt;
Mike Schnieders       michael-schnieders@uiowa.edu          Iowa&lt;br /&gt;
&lt;br /&gt;
Yihan Shao            yihan.shao@ou.edu                     Oklahoma&lt;br /&gt;
&lt;br /&gt;
David Sherrill        sherrill@chemistry.gatech.edu         Georgia Tech&lt;br /&gt;
&lt;br /&gt;
Roseane Silva         roseane@wustl.edu                     WashU&lt;br /&gt;
&lt;br /&gt;
Andrew Thiel          andrew-thiel@uiowa.edu                Iowa&lt;br /&gt;
&lt;br /&gt;
Sameer Varma          svarma@usf.edu                        South Florida&lt;br /&gt;
&lt;br /&gt;
Elizabeth Wait        elizabethewait@utexas.edu             UT Austin&lt;br /&gt;
&lt;br /&gt;
Lee-Ping Wang         leeping@ucdavis.edu                   UC Davis&lt;br /&gt;
&lt;br /&gt;
Zhi Wang              oukore@gmail.com                      ByteDance&lt;br /&gt;
&lt;br /&gt;
Guowei Wei            wei@math.msu.edu                      Michigan State&lt;br /&gt;
&lt;br /&gt;
Chuanjie Wu           chuanjiewu@gmail.com                  Schrodinger&lt;br /&gt;
&lt;br /&gt;
Wei Yang              yang@sb.fsu.edu                       Florida State&lt;br /&gt;
&lt;br /&gt;
Darren York           darrin.york@rutgers.edu               Rutgers&lt;br /&gt;
&lt;br /&gt;
Ketsia Zinga          kzinga@utexas.edu                     UT Austin&lt;/div&gt;</summary>
		<author><name>Pren</name></author>
	</entry>
</feed>