This commit is contained in:
fudanyi 2014-10-29 10:04:53 +08:00
Родитель 09ee4981fd
Коммит 9c34fcfa5a
165 изменённых файлов: 42969 добавлений и 0 удалений

Двоичные данные
Documents/ConfigureLinux/CcpActivate.dll Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/CcpActivate.pdb Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Scheduler.Communicator.dll Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Scheduler.Communicator.pdb Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/Microsoft.Owin.Host.HttpListener.dll Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,149 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Owin.Host.HttpListener</name>
</assembly>
<members>
<member name="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.ExceptionFilterStream">
<summary>
This class is used to wrap other streams and convert some exception types.
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.RequestHeadersDictionary">
<summary>
This wraps HttpListenerRequest's WebHeaderCollection (NameValueCollection) and adapts it to
the OWIN required IDictionary surface area. It remains fully mutable, but you will be subject
to the header validations performed by the underlying collection.
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.OwinHttpListener">
<summary>
This wraps HttpListener and exposes it as an OWIN compatible server.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinHttpListener.#ctor">
<summary>
Creates a listener wrapper that can be configured by the user before starting.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinHttpListener.SetRequestProcessingLimits(System.Int32,System.Int32)">
<summary>
These are merged as one call because they should be swapped out atomically.
This controls how many requests the server attempts to process concurrently.
</summary>
<param name="maxAccepts">The maximum number of pending request receives.</param>
<param name="maxRequests">The maximum number of active requests being processed.</param>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinHttpListener.GetRequestProcessingLimits(System.Int32@,System.Int32@)">
<summary>
</summary>
<param name="maxAccepts"></param>
<param name="maxRequests"></param>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(System.Net.HttpListener,System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.Collections.Generic.IList{System.Collections.Generic.IDictionary{System.String,System.Object}},System.Collections.Generic.IDictionary{System.String,System.Object},System.Func{System.String,System.Func{System.Diagnostics.TraceEventType,System.Int32,System.Object,System.Exception,System.Func{System.Object,System.Exception,System.String},System.Boolean}})">
<summary>
Starts the listener and request processing threads.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinHttpListener.Dispose">
<summary>
Shuts down the listener and disposes it.
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.OwinHttpListener.Listener">
<summary>
The HttpListener instance wrapped by this wrapper.
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerRequest">
<summary>
This wraps an HttpListenerRequest and exposes it as an OWIN environment IDictionary.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerRequest.#ctor(System.Net.HttpListenerRequest,System.String,System.String,System.String,Microsoft.Owin.Host.HttpListener.RequestProcessing.CallEnvironment)">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerRequest"/> class.
Uses the given request object to populate the OWIN standard keys in the environment IDictionary.
Most values are copied so that they can be mutable, but the headers collection is only wrapped.
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerResponse">
<summary>
This wraps an HttpListenerResponse, populates it with the given response fields, and relays
the response body to the underlying stream.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerResponse.#ctor(System.Net.HttpListenerContext,Microsoft.Owin.Host.HttpListener.RequestProcessing.CallEnvironment)">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Owin.Host.HttpListener.RequestProcessing.OwinHttpListenerResponse"/> class.
Sets up the Environment with the necessary request state items.
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Exception_DuplicateKey">
<summary>
Looks up a localized string similar to The key &apos;{0}&apos; is already present in the dictionary..
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Log_AppDisonnectErrors">
<summary>
Looks up a localized string similar to App errors on disconnect notification..
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Log_RequestProcessingException">
<summary>
Looks up a localized string similar to Exception during request processing..
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Log_UnableToSetup">
<summary>
Looks up a localized string similar to Unable to resolve handles. Disconnect notifications will be ignored..
</summary>
</member>
<member name="P:Microsoft.Owin.Host.HttpListener.Resources.Log_UnexpectedException">
<summary>
Looks up a localized string similar to Unexpected exception..
</summary>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.OwinServerFactory">
<summary>
Implements the Katana setup pattern for the OwinHttpListener server.
</summary>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinServerFactory.Initialize(System.Collections.Generic.IDictionary{System.String,System.Object})">
<summary>
Advertise the capabilities of the server.
</summary>
<param name="properties"></param>
</member>
<member name="M:Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.Collections.Generic.IDictionary{System.String,System.Object})">
<summary>
Creates an OwinHttpListener and starts listening on the given URL.
</summary>
<param name="app">The application entry point.</param>
<param name="properties">The addresses to listen on.</param>
<returns>The OwinHttpListener. Invoke Dispose to shut down.</returns>
</member>
<member name="T:Microsoft.Owin.Host.HttpListener.WebSockets.Constants">
<summary>
Standard keys and values for use within the OWIN interfaces
</summary>
</member>
</members>
</doc>

Двоичные данные
Documents/ConfigureLinux/Microsoft.Owin.Hosting.dll Normal file

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
Documents/ConfigureLinux/Microsoft.Owin.dll Normal file

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
Documents/ConfigureLinux/Newtonsoft.Json.dll Normal file

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
Documents/ConfigureLinux/Owin.dll Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/System.Net.Http.Formatting.dll Normal file

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
Documents/ConfigureLinux/System.Web.Http.Owin.dll Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.Web.Http.Owin</name>
</assembly>
<members>
<member name="T:System.Net.Http.OwinHttpRequestMessageExtensions">
<summary>Provides extension methods for the <see cref="T:System.Net.Http.HttpRequestMessage" /> class.</summary>
</member>
<member name="M:System.Net.Http.OwinHttpRequestMessageExtensions.GetOwinContext(System.Net.Http.HttpRequestMessage)">
<summary>Gets the OWIN context for the specified request.</summary>
<returns>The OWIN environment for the specified context, if available; otherwise <see cref="null" />.</returns>
<param name="request">The HTTP request message.</param>
</member>
<member name="M:System.Net.Http.OwinHttpRequestMessageExtensions.GetOwinEnvironment(System.Net.Http.HttpRequestMessage)">
<summary>Gets the OWIN environment for the specified request.</summary>
<returns>The OWIN environment for the specified request, if available; otherwise <see cref="null" />.</returns>
<param name="request">The HTTP request message.</param>
</member>
<member name="M:System.Net.Http.OwinHttpRequestMessageExtensions.SetOwinContext(System.Net.Http.HttpRequestMessage,Microsoft.Owin.IOwinContext)">
<summary>Sets the OWIN context for the specified request.</summary>
<param name="request">The HTTP request message.</param>
<param name="context">The OWIN context to set.</param>
</member>
<member name="M:System.Net.Http.OwinHttpRequestMessageExtensions.SetOwinEnvironment(System.Net.Http.HttpRequestMessage,System.Collections.Generic.IDictionary{System.String,System.Object})">
<summary>Sets the OWIN environment for the specified request.</summary>
<param name="request">The HTTP request message.</param>
<param name="environment">The OWIN environment to set.</param>
</member>
<member name="T:System.Web.Http.HostAuthenticationAttribute">
<summary>Represents an authentication attribute that authenticates via OWIN middleware.</summary>
</member>
<member name="M:System.Web.Http.HostAuthenticationAttribute.#ctor(System.String)">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.HostAuthenticationAttribute" /> class.</summary>
<param name="authenticationType">The authentication type of the OWIN middleware to use.</param>
</member>
<member name="P:System.Web.Http.HostAuthenticationAttribute.AllowMultiple"></member>
<member name="M:System.Web.Http.HostAuthenticationAttribute.AuthenticateAsync(System.Web.Http.Filters.HttpAuthenticationContext,System.Threading.CancellationToken)"></member>
<member name="P:System.Web.Http.HostAuthenticationAttribute.AuthenticationType">
<summary>Gets the authentication type of the OWIN middleware to use.</summary>
</member>
<member name="M:System.Web.Http.HostAuthenticationAttribute.ChallengeAsync(System.Web.Http.Filters.HttpAuthenticationChallengeContext,System.Threading.CancellationToken)"></member>
<member name="T:System.Web.Http.HostAuthenticationFilter">
<summary>Represents an authentication filter that authenticates via OWIN middleware.</summary>
</member>
<member name="M:System.Web.Http.HostAuthenticationFilter.#ctor(System.String)">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.HostAuthenticationFilter" /> class.</summary>
<param name="authenticationType">The authentication type of the OWIN middleware to use.</param>
</member>
<member name="P:System.Web.Http.HostAuthenticationFilter.AllowMultiple">
<summary>Gets a value indicating whether the filter allows multiple authentication.</summary>
<returns>true if the filter allows multiple authentication; otherwise, false.</returns>
</member>
<member name="M:System.Web.Http.HostAuthenticationFilter.AuthenticateAsync(System.Web.Http.Filters.HttpAuthenticationContext,System.Threading.CancellationToken)">
<summary>Asynchronously authenticates the request.</summary>
<returns>The task that completes the authentication.</returns>
<param name="context">The authentication context.</param>
<param name="cancellationToken">The cancellation token.</param>
</member>
<member name="P:System.Web.Http.HostAuthenticationFilter.AuthenticationType">
<summary>Gets the authentication type of the OWIN middleware to use.</summary>
<returns>The authentication type of the OWIN middleware to use.</returns>
</member>
<member name="M:System.Web.Http.HostAuthenticationFilter.ChallengeAsync(System.Web.Http.Filters.HttpAuthenticationChallengeContext,System.Threading.CancellationToken)">
<summary>Asynchronously challenges an authentication.</summary>
<returns>The task that completes the challenge.</returns>
<param name="context">The context.</param>
<param name="cancellationToken">The cancellation token.</param>
</member>
<member name="T:System.Web.Http.OwinHttpConfigurationExtensions">
<summary>Provides extension methods for the <see cref="T:System.Web.Http.HttpConfiguration" /> class.</summary>
</member>
<member name="M:System.Web.Http.OwinHttpConfigurationExtensions.SuppressDefaultHostAuthentication(System.Web.Http.HttpConfiguration)">
<summary>Enables suppression of the host's default authentication.</summary>
<param name="configuration">The server configuration.</param>
</member>
<member name="T:System.Web.Http.Owin.HttpMessageHandlerAdapter">
<summary>Represents an OWIN component that submits requests to an <see cref="T:System.Net.Http.HttpMessageHandler" /> when invoked.</summary>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerAdapter.#ctor(Microsoft.Owin.OwinMiddleware,System.Net.Http.HttpMessageHandler,System.Web.Http.Hosting.IHostBufferPolicySelector)">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" /> class.</summary>
<param name="next">The next component in the pipeline.</param>
<param name="messageHandler">The <see cref="T:System.Net.Http.HttpMessageHandler" /> to submit requests to.</param>
<param name="bufferPolicySelector">The <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> that determines whether or not to buffer requests and responses.</param>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerAdapter.#ctor(Microsoft.Owin.OwinMiddleware,System.Web.Http.Owin.HttpMessageHandlerOptions)">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" /> class.</summary>
<param name="next">The next component in the pipeline.</param>
<param name="options">The options to configure this adapter.</param>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerAdapter.AppDisposing">
<summary>Gets the cancellation token that triggers cleanup of this component.</summary>
<returns>The cancellation token.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerAdapter.BufferPolicySelector">
<summary>Gets the <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> that determines whether or not to buffer requests and responses.</summary>
<returns>The <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> that determines whether or not to buffer requests and responses.</returns>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerAdapter.Dispose">
<summary>Releases all resources used by the current instance of the <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" /> class.</summary>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerAdapter.Dispose(System.Boolean)">
<summary>Releases unmanaged and optionally managed resources.</summary>
<param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerAdapter.ExceptionHandler">
<summary>Gets the <see cref="T:System.Web.Http.ExceptionHandling.IExceptionHandler" /> to use to process unhandled exceptions.</summary>
<returns>The <see cref="T:System.Web.Http.ExceptionHandling.IExceptionHandler" /> to use to process unhandled exceptions.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerAdapter.ExceptionLogger">
<summary>Gets the <see cref="T:System.Web.Http.ExceptionHandling.IExceptionLogger" /> to use to log unhandled exceptions.</summary>
<returns>The <see cref="T:System.Web.Http.ExceptionHandling.IExceptionLogger" /> to use to log unhandled exceptions.</returns>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerAdapter.Invoke(Microsoft.Owin.IOwinContext)">
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerAdapter.MessageHandler">
<summary>Gets the <see cref="T:System.Net.Http.HttpMessageHandler" /> to submit requests to.</summary>
<returns>The <see cref="T:System.Net.Http.HttpMessageHandler" /> to submit requests to.</returns>
</member>
<member name="T:System.Web.Http.Owin.HttpMessageHandlerOptions">
<summary>Represents the options for configuring an <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" />.</summary>
</member>
<member name="M:System.Web.Http.Owin.HttpMessageHandlerOptions.#ctor">
<summary>Initializes a new instance of the<see cref="T:System.Web.Http.Owin.HttpMessageHandlerOptions" /> class.</summary>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerOptions.AppDisposing">
<summary>Gets or sets the <see cref="T:System.Threading.CancellationToken" /> that triggers cleanup of the <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" />.</summary>
<returns>The <see cref="T:System.Threading.CancellationToken" /> that triggers cleanup of the <see cref="T:System.Web.Http.Owin.HttpMessageHandlerAdapter" />.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerOptions.BufferPolicySelector">
<summary>Gets or sets the <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> that determines whether or not to buffer requests and responses.</summary>
<returns>The <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> that determines whether or not to buffer requests and responses.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerOptions.ExceptionHandler">
<summary>Gets or sets the <see cref="T:System.Web.Http.ExceptionHandling.IExceptionHandler" /> to use to process unhandled exceptions.</summary>
<returns>The <see cref="T:System.Web.Http.ExceptionHandling.IExceptionHandler" /> to use to process unhandled exceptions.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerOptions.ExceptionLogger">
<summary>Gets or sets the <see cref="T:System.Web.Http.ExceptionHandling.IExceptionLogger" /> to use to log unhandled exceptions.</summary>
<returns>The <see cref="T:System.Web.Http.ExceptionHandling.IExceptionLogger" /> to use to log unhandled exceptions.</returns>
</member>
<member name="P:System.Web.Http.Owin.HttpMessageHandlerOptions.MessageHandler">
<summary>Gets or sets the <see cref="T:System.Net.Http.HttpMessageHandler" /> to submit requests to.</summary>
<returns>The <see cref="T:System.Net.Http.HttpMessageHandler" /> to submit requests to.</returns>
</member>
<member name="T:System.Web.Http.Owin.OwinBufferPolicySelector">
<summary>Provides the default implementation of <see cref="T:System.Web.Http.Hosting.IHostBufferPolicySelector" /> used by the OWIN Web API adapter.</summary>
</member>
<member name="M:System.Web.Http.Owin.OwinBufferPolicySelector.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.Owin.OwinBufferPolicySelector" /> class.</summary>
</member>
<member name="M:System.Web.Http.Owin.OwinBufferPolicySelector.UseBufferedInputStream(System.Object)">
<summary>Determines whether the host should buffer the HttpRequestMessage entity body.</summary>
<returns>true if buffering should be used; otherwise a streamed request should be used.</returns>
<param name="hostContext">The host context.</param>
</member>
<member name="M:System.Web.Http.Owin.OwinBufferPolicySelector.UseBufferedOutputStream(System.Net.Http.HttpResponseMessage)">
<summary>Determines whether the host should buffer the HttpResponseMessage entity body.</summary>
<returns>true if buffering should be used; otherwise a streamed response should be used.</returns>
<param name="response">The response.</param>
</member>
<member name="T:System.Web.Http.Owin.OwinExceptionCatchBlocks">
<summary>Provides the catch blocks used within this assembly.</summary>
</member>
<member name="P:System.Web.Http.Owin.OwinExceptionCatchBlocks.HttpMessageHandlerAdapterBufferContent">
<summary>Gets the catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.BufferContent.</summary>
<returns>The catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.BufferContent.</returns>
</member>
<member name="P:System.Web.Http.Owin.OwinExceptionCatchBlocks.HttpMessageHandlerAdapterBufferError">
<summary>Gets the catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.BufferError.</summary>
<returns>The catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.BufferError.</returns>
</member>
<member name="P:System.Web.Http.Owin.OwinExceptionCatchBlocks.HttpMessageHandlerAdapterComputeContentLength">
<summary>Gets the catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.ComputeContentLength.</summary>
<returns>The catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.ComputeContentLength.</returns>
</member>
<member name="P:System.Web.Http.Owin.OwinExceptionCatchBlocks.HttpMessageHandlerAdapterStreamContent">
<summary>Gets the catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.StreamContent.</summary>
<returns>The catch block in System.Web.Http.Owin.HttpMessageHandlerAdapter.StreamContent.</returns>
</member>
<member name="T:System.Web.Http.Owin.PassiveAuthenticationMessageHandler">
<summary>Represents a message handler that treats all OWIN authentication middleware as passive.</summary>
</member>
<member name="M:System.Web.Http.Owin.PassiveAuthenticationMessageHandler.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Web.Http.Owin.PassiveAuthenticationMessageHandler" /> class.</summary>
</member>
<member name="M:System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken)">
<summary>Asynchronously sends a message request.</summary>
<returns>The task that completes the asynchronous operation.</returns>
<param name="request">The message request.</param>
<param name="cancellationToken">The cancellation token.</param>
</member>
</members>
</doc>

Двоичные данные
Documents/ConfigureLinux/System.Web.Http.dll Normal file

Двоичный файл не отображается.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
Documents/ConfigureLinux/TestStream.exe Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Двоичные данные
Documents/ConfigureLinux/TestStream.pdb Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/ConfigureLinux/TestStream.vshost.exe Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Просмотреть файл

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Просмотреть файл

@ -0,0 +1,35 @@
+--------------------------------------------------------------------+
| |
| NAMD README |
| |
+--------------------------------------------------------------------+
NAMD is a parallel, object-oriented molecular dynamics code designed
for high-performance simulation of large biomolecular systems.
NAMD is distributed free of charge and includes source code.
All distributions of NAMD include the following files:
announce.txt
This file contains the announcement for this version of NAMD.
notes.txt
This file includes directions for compiling and running NAMD
and advice for resolving problems and reporting bugs.
license.txt
This file contains the license under which NAMD is distributed
and to which you must agree in order to use the program.
Full documentation for using NAMD is available from the NAMD web site:
http://www.ks.uiuc.edu/Research/namd/
VMD, NAMD, and BioCoRE represent a broad effort by the Theoretical and
Computational Biophysics Group, an NIH Center for Macromolecular
Modeling and Bioinformatics, to develop and freely distribute effective
tools (with source code) for molecular dynamics studies in structural
biology. For more information, see http://www.ks.uiuc.edu/
The NAMD project is funded by the National Institutes of Health
National Institute of General Medical Sciences (NIH 9P41GM104601).

Просмотреть файл

@ -0,0 +1,80 @@
+--------------------------------------------------------------------+
| |
| NAMD 2.10b1 Release Announcement |
| |
+--------------------------------------------------------------------+
August 22, 2014
The Theoretical and Computational Biophysics Group at the University of
Illinois is proud to announce the public release of a new version of
NAMD, a parallel, object-oriented molecular dynamics code designed for
high-performance simulation of large biomolecular systems. NAMD is
distributed free of charge and includes source code. NAMD development
is supported by the NIH National Institute of General Medical Sciences.
NAMD 2.10b1 has many advantages over NAMD 2.9, among these are:
- Network topology adaptation for CRAY XE/XK and IBM Blue Gene/Q
- CRAY XC30 and IBM Blue Gene/Q native network layers
- Multiple-copy algorithm support for native network layers
- Lambda-exchange multiple-copy alchemical free energy calculations
- String method with swarms-of-trajectories transition pathways
- Atom coordinate/velocity exchange for multiple-copy algorithms
- Tcl scripting command to reinitialize atoms from output files
- Tcl scripting configuration file parameter introspection
- Tcl scripting trajectory and restart output file switching
- Multilevel summation method for long-range electrostatics
- Normalized external electric field to avoid pressure artifacts
- Improved scalability for collective variables, Tcl forces, etc.
- Collective variables module improvements
- Drude polarizable force field improvements
- SMOG structure-based potential support
- Minimizer stability and performance improvements
- Various improvements for 100-million-atom simulations
- Update to CUDA 6.0 with Kepler GPU optimizations
- GPU-accelerated particle-mesh Ewald calculation
- Intel Xeon Phi coprocessor support
- 64-bit Windows shared-memory single-node port with CUDA support
- 32-bit and 64-bit ARM processor port with CUDA support
- Enhanced performance and scalability
Details at http://www.ks.uiuc.edu/Research/namd/2.10/features.html
NAMD is available from http://www.ks.uiuc.edu/Research/namd/
For your convenience, NAMD has been ported to and will be installed
on the machines at the NSF-sponsored national supercomputing centers.
If you are planning substantial simulation work of an academic nature
you should apply for these resources. Benchmarks for your proposal
are available at http://www.ks.uiuc.edu/Research/namd/performance.html
The Theoretical and Computational Biophysics Group encourages NAMD users
to be closely involved in the development process through reporting
bugs, contributing fixes, periodical surveys and via other means.
Questions or comments may be directed to namd@ks.uiuc.edu.
We are eager to hear from you, and thank you for using our software!

Просмотреть файл

@ -0,0 +1,27 @@
args=""
while [ $# -gt 0 ]
do
case $1 in
+p|+ppn) args=$args" "$1" "$2
shift;
shift
;;
++ppn) echo please use +ppn instead of ++ppn
exit 1
;;
+*)
args=$args" "$1
shift
;;
*)
break;
;;
esac
done
echo Running command: $* $args
echo
exec $* $args

Двоичные данные
Documents/LinuxNodeFiles/namd/flipbinpdb Normal file

Двоичный файл не отображается.

Двоичные данные
Documents/LinuxNodeFiles/namd/flipdcd Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,99 @@
#############################################
# Generic ABF code #
# Jerome Henin <jerome.henin@uhp-nancy.fr> #
#############################################
############
# Startup #
############
package provide abf 1.6.0
#########################
# Parameter definitions #
#########################
namespace eval ::ABF {
set version "1.6"
if {! [info exists ABFdir]} { set ABFdir [file dirname [info script]] }
# If it fails, try the local directory
if { $ABFdir == "" } { set ABFdir "." }
TclForces on
TclForcesScript $ABFdir/abf_script.tcl
array set defaults {
inFiles {}
outFile abf.dat
historyFile none
distFile none
forceConst 10.0
fullSamples 1000
outputFreq 5000
df 1.0
fMax 60.0
dSmooth 0.0
writeXiFreq 0
writeFxiFreq 0
usMode no
applyBias yes
moveBoundary 0
temp 300.0
abf2 {}
}
set mandatory "coordinate xiMin xiMax dxi abf1"
# these settings are not displayed at startup
set silent "restraintList usMode SFM applyBias direction"
array set capitals {}
foreach param [concat $silent $mandatory [array names defaults]] {
set capitals([string tolower $param]) $param
# not set yet
set alreadySet($param) 0
}
} ;# namespace
proc abf { keyword value } {
set ::ABF::keyword $keyword
set ::ABF::value $value
namespace eval ::ABF {
# Build list of all allowed parameter names
set list [array names capitals]
set lowercase [string tolower $keyword]
# Process parameters
if {[lsearch $list $lowercase] != -1} {
set keyword $capitals($lowercase)
if { $alreadySet($keyword) } {
print "ABF> WARNING - multiple definitions of parameter " $keyword
}
set $keyword $value
set alreadySet($keyword) 1
return
} else {
error [format "Unknown ABF keyword: %s" $keyword]
}
} ;# namespace
} ;# proc abf
# define upper-case synonyms to proc abf
proc ABF { keyword value } {
abf $keyword $value
}
proc Abf { keyword value } {
abf $keyword $value
}

Просмотреть файл

@ -0,0 +1,782 @@
#############################################
# Generic ABF code #
# Jerome Henin <jerome.henin@uhp-nancy.fr> #
#############################################
#######################################################
# Separate source files for coordinate-specific stuff #
#######################################################
namespace eval ::ABF {
print ABF> ---------------------------------------------
print ABF> Adaptive Biasing Force protocol version $version
print ABF> ---------------------------------------------
print ABF>
print "ABF> Using coordinate type : $coordinate"
set sourceFile [format "%s/%s.tcl" $ABFdir $coordinate]
if ![file exists $sourceFile] {
error "ABF> TCL file $sourceFile not found"
} else { source $sourceFile }
# Print info about the coordinate-specific code
if [info exists ABFcoordID] { print "ABF> $ABFcoordID" }
array set forceDist {}
#####################################################
# Default values for optional parameters #
#####################################################
# SFM : Scaled-Force Method / Langevin
# This is in development phase, and not official
# For more info, read the code and E. Darve & A. Pohorille, J. Chem. Phys. (2001)
# First, use coordinate-specific defaults
if {[array exists ABFoptions]} {foreach option [array names ABFoptions] {
if {! [info exists $option]} {
set $option $ABFoptions($option)
if {[lsearch $silent $option] == -1} {
print [format "ABF> %16s : %-14s \[default\]" $option [expr $$option]]
}
} else {
if {[lsearch $silent $option] == -1} {
print [format "ABF> %16s : %s" $option [expr $$option]]
}
}
}}
# Then, the generic ones
foreach option [array names defaults] {
if {! [info exists $option]} {
set $option $defaults($option)
if {[lsearch $silent $option] == -1} {
print [format "ABF> %16s : %-14s \[default\]" $option [expr $$option]]
}
} elseif { (![array exists ABFoptions] || [lsearch [array names ABFoptions] $option] == -1)} {
if {[lsearch $silent $option] == -1} {
print [format "ABF> %16s : %s" $option [expr $$option]]
}
}
}
# Test mandatory parameters
foreach var $mandatory {
if {! [info exists $var]} {
error "ABF> Mandatory parameter $var is not set -- cannot start ABF"
} elseif { (![array exists ABFoptions] || [lsearch [array names ABFoptions] $var] == -1)\
&& ([lsearch [array names defaults] $var] == -1) \
&& ($var != "coordinate") } {
print [format "ABF> %16s : %s" $var [expr $$var]]
}
}
set timestep 0
# These are useful when using "moving boundaries"
# xiMin0 and xiMin0 + nMax * dxi are the limits of the data arrays
# xiMin and xiMax are the limits between the
# sampling/biasing domain and the confining biases
set xiMin0 $xiMin
set nMax [expr {int (($xiMax - $xiMin)/ $dxi) - 1}]
# this is a bit awkward, but it repairs truncation errors
if { [expr {$xiMin + ($nMax + 1.0) * $dxi}] < $xiMax } {incr nMax}
# These variables will keep track of moving boundaries
set firstBin 0
set lastBin $nMax
for {set i 0} {$i <= $nMax} {incr i} {
array set samples "$i 0"
array set accForce "$i 0"
}
if { [info exist SFM ] } {
print "ABF>"
print "ABF> *****************************************************"
print "ABF> Will be using the Scaled Force Method, not ABF"
print "ABF> *****************************************************"
print "ABF>"
}
if { $applyBias != "yes" } {
print "ABF>"
print "ABF> *****************************************************"
print "ABF> *** WARNING --- Biasing force will NOT be applied ***"
print "ABF> *****************************************************"
print "ABF>"
set applyBias no
}
if { $usMode != "no" } {
for {set i 0} {$i <= $nMax} {incr i} {
array set Usampling "$i 0"
}
print "ABF>"
print "ABF> **********************************************"
print "ABF> *** WARNING --- entering US mode, not ABF ***"
print "ABF> **********************************************"
print "ABF>"
print "ABF> Accumulating sampling data in [expr {$nMax + 1}] bins"
} else {
print "ABF> Accumulating force data in [expr {$nMax + 1}] bins"
}
set dSmooth [expr {$dSmooth / $dxi} ]
set minSamples [expr {($fullSamples > 2) ? ($fullSamples / 2) : 1}]
# Remove existing history file
if { $historyFile != "none" } {
set history [open $historyFile w]
close $history
}
##################################################
# Read previous results if available #
##################################################
foreach name $inFiles {
set in [open $name r]
print "ABF> Loading previous force data from $name ..."
# Skip initial comment lines
set ret [gets $in line]
while { ($ret > -1) && ("[string index $line 0]" == "#") } {
set ret [gets $in line]
}
set count 0
while { $ret > -1 } {
set xi [lindex $line 0]
set f [lindex $line 2]
set n [lindex $line 3]
if { $n && ($xi >= $xiMin) && ($xi < $xiMax) } {
set i [expr {int(($xi - $xiMin)/$dxi)}] ;# Current bin
incr samples($i) $n
set accForce($i) [expr {$accForce($i) + $f * $n}]
incr count $n
}
set ret [gets $in line]
}
print "ABF> $count sampling points retrieved"
close $in
}
}
# The calls for startup procedures are after procedure definitions
# In root namespace (::) for all procedures
# We HAVE to add the following procedure definition
proc veclength {v} {
return [expr {sqrt([veclength2 $v])}]
}
# Source a file from VMD
source $ABF::ABFdir/vectors.tcl
###################################################
# Procedure to be called by NAMD at each timestep #
###################################################
proc calcforces {} {
namespace eval ::ABF {
# First timestep : we don't have forces
if { $timestep == 0 } {
# must not be equal to $timestep - 1
set timeStored -2
set xi [ABFcoord] ;# for timestep 1
set cur [expr {int(($xi - $xiMin0)/$dxi)}] ;# Current bin
writeData ;# write initial data, if any
if { $restraintsOn } { restraints }
if { $writeXiFreq } { print ABF> Xi at timestep 0 : $xi}
incr timestep
return ;# nothing more to do in this timestep
}
# ***** Collect the force along the RC *****
if { ($xi >= $xiMin) && ($xi < $xiMax) } {
# To do only if we're in the right range of xi
# Force data is from previous timestep
# Same thing for coordinates
set fxi [expr {($timeStored == $timestep - 1)? \
[ABForce] - $storedForce : [ABForce]}]
if { $usMode != "no" } {
incr Usampling($cur)
# don't touch forces : just keep track of sampling
} else {
incr samples($cur)
set accForce($cur) [expr {$accForce($cur) + $fxi}]
}
if { $distFile != "none" } { forceDistrib } ;# Store force distribution in bin n
} elseif { [info exists SFM] } {
# we need it anyway if we use SFM
set fxi [expr {($timeStored == $timestep - 1)? \
[ABForce] - $storedForce : [ABForce]}]
}
if { $writeFxiFreq && [expr {$timestep % $writeFxiFreq} ] == 0 } {
print "ABF> Fxi at timestep $timestep : $fxi"
}
# Get coord data for current timestep
set old_xi $xi ;# for SFM
set xi [ABFcoord]
set cur [expr {int(($xi - $xiMin0)/$dxi)}] ;# Current bin
if { $restraintsOn } { restraints }
if { $writeXiFreq && [expr {$timestep % $writeXiFreq} ] == 0 } {
print "ABF> Xi at timestep $timestep : $xi"
}
# If requested, use moving boundaries
if { $moveBoundary } {
if { ($samples($firstBin) > $moveBoundary) && ($cur > $firstBin) && ($firstBin < [expr {$lastBin + 1} ]) } {
set xiMin [expr {$xiMin + $dxi}]
incr firstBin
print "ABF> Increased lower boundary to $xiMin"
}
if { ($samples($lastBin) > $moveBoundary) && ($cur < $lastBin) && ($firstBin < [expr {$lastBin + 1} ]) } {
set xiMax [expr {$xiMax - $dxi}]
set lastBin [expr {$lastBin - 1}]
print "ABF> Decreased upper boundary to $xiMax"
}
}
if { $xi >= $xiMin && $xi < $xiMax && ($applyBias != "no")} {
if {![info exists SFM]} {
# We're inside the reaction coordinate range : try to apply ABF
set F [fSmoothed]
set storedForce [ABFapply $F]
set timeStored $timestep
} else {
# now we're doing SFM
set ts 0.001 ;# ps
set friction 50.0 ;# amu / ps
set RT [ expr {8.314 * 300.0} ] ;# J/mol
# velocity along xi
set vxi [expr {($xi - $old_xi) / $ts}]
# stochastic force RMS (kcal/mol/A)
set sigma [expr {(1.0/4.18e3) * sqrt( 2 * $RT * $friction * 10.0 / $ts)}]
# normally distributed pseudo-random number
set sq 2.0
while { $sq >= 1.0 || $sq == 0.0 } {
set v1 [expr {2.0 * rand() - 1.0}]
set v2 [expr {2.0 * rand() - 1.0}]
set sq [expr {$v1*$v1 + $v2*$v2}]
}
set random [expr {$v1 * sqrt(-2.0 * log($sq) / $sq)}]
set FL [ expr {$sigma * $random - $friction * $vxi} ]
# Langevin force minus (approximate) force along xi
set storedForce [ABFapply [expr {$FL - $fxi}] ]
set timeStored $timestep
}
} else {
# We're out of the reaction coordinate range : consider applying bounding restraints
# (if applyBias is "no" and xiMin <= xi <= xiMax, we end up here and do nothing )
# special treatment for angles
if {($coordinate == "dihedral") && ($forceConst > 0.0) && (($xi < $xiMin) || ($xi >= $xiMax))} {
# compute the "real" differences
set dm [expr abs(fmod(abs($xi-$xiMin)+180, 360) - 180)]
set dM [expr abs(fmod(abs($xi-$xiMax)+180, 360) - 180)]
# if we are closer to xiMax, restrain down towards xiMax
# else restrain up towards xiMin
set rest [expr {($dm > $dM) ? -$forceConst * $dM : $forceConst * $dm}]
ABFapply $rest
} else {
if { ($xi < $xiMin) && ($forceConst > 0.0) } {
set rest [expr {$forceConst * ($xiMin - $xi)}]
ABFapply $rest
}
if { ($xi > $xiMax ) && ($forceConst > 0.0) } {
set rest [expr {$forceConst * ($xiMax - $xi)}]
ABFapply $rest
}
}
}
if { ($outputFreq > 0) && ([expr {$timestep % $outputFreq}]==0) } { writeData }
incr timestep ;# Count timesteps
return
} ;# namespace
}
#########################################
# This computes a smooth weighted #
# average force #
#########################################
proc fSmoothed {} {
namespace eval ::ABF {
if { $dSmooth < 1.0 } {
# Use the data in one bin
set i [expr {int( ($xi - $xiMin0) / $dxi)}]
set n $samples($i)
if { $n < $minSamples } { return 0 }
set F [expr {- $accForce($i)/$n}]
if { $fullSamples < 2} {
set factor 1.0
} else {
set factor [expr {($n-$minSamples)/(.0+$fullSamples-$minSamples)}]
}
if { $factor >= 1.0 } { return $F }
return [expr {$factor * $F}]
}
# ($xi - $xiMin0) / $dxi is between 0 and nMax
set x [expr {($xi - $xiMin0) / $dxi - 0.5}]
# Now x is between -0.5 and nBins - 0.5
set iMin [expr {($x-$dSmooth < 0.0) ? 0 : int($x-$dSmooth)+1}]
set iMax [expr {($x+$dSmooth >= $nMax ) ? $nMax : int($x+$dSmooth)}]
set norm 0.0
set n 0.0
set F 0.0
for { set i $iMin} { $i <= $iMax } { incr i } {
set c [expr {$dSmooth - abs($i-$x)}]
# c is the weight of bin i
set norm [expr {$norm + $c}]
set n [expr {$n + $c * $samples($i)}]
set F [expr {$F + $c * $accForce($i)}]
}
if { $n == 0.0 } { return 0 }
set F [expr {- $F / $n}]
# F is the opposite of our average force
set n [expr {$n / $norm}]
# n is the (weighted) average amount of sampling
if { $n < $minSamples } { return 0 }
if { $fullSamples < 2 } {
set factor 1.0
} else {
set factor [expr {($n-$minSamples)/(.0+$fullSamples-$minSamples)}]
}
if { $factor >= 1.0 } { return $F }
return [expr {$F * $factor}]
} ;# namespace
}
#########################################
# Called by calcforces at last timestep #
# and every outputFreq timesteps #
#########################################
proc writeData {} {
namespace eval ::ABF {
if { $historyFile != "none" && [expr {($timestep / $outputFreq) % 10 }] == 0 } {
set history [open $historyFile a]
puts $history "# Timestep $timestep"
puts $history "# xi A(xi) av_force n_samples"
set histFlag 1
} else {
set histFlag 0
}
set out [open $outFile w]
puts $out "# xi A(xi) av_force n_samples"
set pmf 0.0
set force 0
for {set i 0} {$i < [array size samples]} {incr i} {
set oldForce $force
set n $samples($i)
if {$n > 0} {
set force [expr {$accForce($i) / $n}]
} else {
set force 0.0
}
if { $i > 0 } {
set pmf [expr {$pmf - 0.5 * $dxi * ($force + $oldForce)}]
}
if { $usMode != "no" } {
puts $out [format "%12.3f %12.4f %12.4f %12d"\
[expr {$xiMin0 + ($i + 0.5) * $dxi}] $pmf $force $Usampling($i)]
if { $histFlag } {
puts $history [format "%12.3f %12.4f %12.4f %12d"\
[expr {$xiMin0 + ($i + 0.5) * $dxi}] $pmf $force $Usampling($i)]
}
} else {
puts $out [format "%12.3f %12.4f %12.4f %12d"\
[expr {$xiMin0 + ($i + 0.5) * $dxi}] $pmf $force $n]
if { $histFlag } {
puts $history [format "%12.3f %12.4f %12.4f %12d"\
[expr {$xiMin0 + ($i + 0.5) * $dxi}] $pmf $force $n]
}
}
}
close $out
if { $histFlag } {
puts $history "&"
close $history
}
if {$distFile != "none"} {
set dist [open $distFile w]
for {set i 0} {$i < [array size samples]} {incr i} {
puts $dist "&"
puts $dist "\# [expr {$xiMin0 + ($i + 0.5) * $dxi}]"
for {set f [expr {- $fMax}]} {$f < $fMax} {set f [expr {$f + $df}]} {
if {[info exists forceDist($i\ $f)]} {
puts $dist [format "%12.4f %d" $f $forceDist($i\ $f)] }
}
}
close $dist
}
print "ABF> Data written to output files at timestep $timestep"
} ;# namespace
}
#########################################
# Collect force distribution #
#########################################
proc forceDistrib {} {
namespace eval ::ABF {
set f [expr {floor($fxi/$df + 0.5) * $df}]
if {[info exists forceDist($cur\ $f)]} {
incr forceDist($cur\ $f)
} else {
set forceDist($cur\ $f) 1
}
} ;# namespace
}
#########################################
# More or less self explanatory #
#########################################
proc restraints_init {} {
# this is called only once
namespace eval ::ABF {
set PI 3.1415926536
foreach r [array names rArray] {
set type [ lindex $rArray($r) 0 ]
set ok 0
switch $type {
"dist" {
set ok 1
print "ABF> Restraint $r is a distance"
set atoms($r) {}
foreach i { 1 2 } {
set seg [lindex [lindex $rArray($r) $i] 0]
set res [lindex [lindex $rArray($r) $i] 1]
set atom [lindex [lindex $rArray($r) $i] 2]
lappend atoms($r) [atomid $seg $res $atom]
}
foreach a $atoms($r) {addatom $a}
print [format "ABF> Atoms: %-16s k: %6.1f kcal/mol/A² Ref: %5.1f A" \
"($atoms($r))" [lindex $rArray($r) 3] [lindex $rArray($r) 4] ]
}
"distLin" {
set ok 1
print "ABF> Restraint $r is a distance (linear)"
set atoms($r) {}
foreach i { 1 2 } {
set seg [lindex [lindex $rArray($r) $i] 0]
set res [lindex [lindex $rArray($r) $i] 1]
set atom [lindex [lindex $rArray($r) $i] 2]
lappend atoms($r) [atomid $seg $res $atom]
}
foreach a $atoms($r) {addatom $a}
print [format "ABF> Atoms: %-16s F: %6.1f kcal/mol/A Bounds: %5.1f to %5.1f A" \
"($atoms($r))" [lindex $rArray($r) 3] [lindex $rArray($r) 4] [lindex $rArray($r) 5] ]
}
"dihe" {
set ok 1
print ABF> Restraint $r is a dihedral angle
set atoms($r) {}
foreach i { 1 2 3 4 } {
set seg [lindex [lindex $rArray($r) $i] 0]
set res [lindex [lindex $rArray($r) $i] 1]
set atom [lindex [lindex $rArray($r) $i] 2]
lappend atoms($r) [atomid $seg $res $atom]
}
foreach a $atoms($r) {addatom $a}
print [format "ABF> Atoms: %-16s k : %6.1f kcal/mol/rad² Ref: %5.1f deg" \
"($atoms($r))" [lindex $rArray($r) 5] [lindex $rArray($r) 6] ]
}
"angle" {
set ok 1
print "ABF> Restraint $r is a valence angle"
set atoms($r) {}
foreach i { 1 2 3 } {
set seg [lindex [lindex $rArray($r) $i] 0]
set res [lindex [lindex $rArray($r) $i] 1]
set atom [lindex [lindex $rArray($r) $i] 2]
lappend atoms($r) [atomid $seg $res $atom]
}
foreach a $atoms($r) {addatom $a}
print [format "ABF> Atoms: %-16s k: %6.1f kcal/mol/rad² Ref: %5.1f deg" \
"($atoms($r))" [lindex $rArray($r) 4] [lindex $rArray($r) 5] ]
}
"cyl" {
set ok 1
print "ABF> Restraint $r is a cylindrical restraint"
set atoms($r) {}
foreach i [lindex $rArray($r) 1] {
set seg [lindex $i 0]
set res [lindex $i 1]
set atom [lindex $i 2]
lappend atoms($r) [atomid $seg $res $atom]
}
set dir [lindex $rArray($r) 4]
# normalize direction and add the group ID at end of list
set rArray($r) [lreplace $rArray($r) 4 4 [vecnorm $dir] [addgroup $atoms($r)]]
print [format "ABF> Atoms: %-16s k: %6.1f kcal/mol/A² Ref: %s Dir: %s" \
"($atoms($r))" [lindex $rArray($r) 2] [lindex $rArray($r) 3] $dir ]
}
"harm" {
set ok 1
print "ABF> Restraint $r is a generic harmonic restraint"
set seg [lindex [lindex $rArray($r) 1] 0]
set res [lindex [lindex $rArray($r) 1] 1]
set name [lindex [lindex $rArray($r) 1] 2]
set atoms($r) [atomid $seg $res $name]
addatom $atoms($r)
print [format "ABF> Atom: %-17s k: %s kcal/mol/A² Ref: %s" \
$atoms($r) [lindex $rArray($r) 2] [lindex $rArray($r) 3] ]
}
}
if { $ok == 0 } {
print "ABF> Restraint $r is of unknown type $type !"
}
} ;# foreach
} ;# namespace
} ;# proc restraints_init
#########################################
# More or less self explanatory #
#########################################
proc restraints {} {
namespace eval ABF {
loadcoords coords
# Loop on requested restraints
foreach r [ array names atoms ] {
set type [ lindex $rArray($r) 0 ]
switch $type {
"dist" {
# Apply a harmonic restraint to a distance
foreach { a1 a2 } $atoms($r) {}
set k [lindex $rArray($r) 3]
set ref [lindex $rArray($r) 4]
set d [getbond $coords($a1) $coords($a2)]
set vect [vecscale [expr {1.0 / $d}] [vecsub $coords($a2) $coords($a1)]]
set force [expr {-$k * ($d - $ref)}]
addforce $a1 [vecscale [expr {- $force}] $vect]
addforce $a2 [vecscale $force $vect]
}
"distLin" {
# Apply a linear bias to a distance
foreach { a1 a2 } $atoms($r) {}
set d1 [lindex $rArray($r) 4]
set d2 [lindex $rArray($r) 5]
set d [getbond $coords($a1) $coords($a2)]
if { $d >= $d1 && $d < $d2 } {
set vect [vecscale [expr {1.0 / $d}] [vecsub $coords($a2) $coords($a1)]]
set force [expr {- [lindex $rArray($r) 3] }]
addforce $a1 [vecscale [expr {- $force}] $vect]
addforce $a2 [vecscale $force $vect]
}
}
"dihe" {
# Apply a restraint to a dihedral
foreach { a1 a2 a3 a4 } $atoms($r) {}
set k [lindex $rArray($r) 5]
set ref [lindex $rArray($r) 6]
set phi [getdihedral $coords($a1) $coords($a2) $coords($a3) $coords($a4)]
# we need phi between $ref - 180.0 and ref + 180.0
set phi [ expr {$phi + 360.0 * floor( ($ref + 180.0 - $phi) / 360.0)}]
# (in radians)
set diff [expr {($phi - $ref) * $PI/180.0}]
set force [expr {-$k * $diff}]
foreach {g1 g2 g3 g4} [dihedralgrad $coords($a1) $coords($a2) $coords($a3) $coords($a4)] {}
addforce $a1 [vecscale $g1 $force]
addforce $a2 [vecscale $g2 $force]
addforce $a3 [vecscale $g3 $force]
addforce $a4 [vecscale $g4 $force]
}
"angle" {
# Apply a restraint to a valence angle
foreach { a1 a2 a3 } $atoms($r) {}
set k [lindex $rArray($r) 4]
set ref [lindex $rArray($r) 5]
set phi [getangle $coords($a1) $coords($a2) $coords($a3)]
# (in radians)
set diff [expr {($phi - $ref) * $PI/180.0}]
set force [expr {-$k * $diff}]
foreach {g1 g2 g3} [anglegrad $coords($a1) $coords($a2) $coords($a3)] {}
addforce $a1 [vecscale $g1 $force]
addforce $a2 [vecscale $g2 $force]
addforce $a3 [vecscale $g3 $force]
}
"cyl" {
set k [lindex $rArray($r) 2]
set ref [lindex $rArray($r) 3]
set u [lindex $rArray($r) 4]
set group [lindex $rArray($r) 5]
set pos $coords($group)
set vecd [vecsub $pos $ref]
set v [vecnorm [veccross $vecd $u]]
set vech [veccross $v $u]
set dot [vecdot $u $vecd]
set d [veclength $vecd]
set h [expr {sqrt($d*$d - $dot*$dot)} ]
addforce $group [vecscale [expr {$k * $h} ] $vech ]
}
"harm" {
set a $atoms($r)
foreach { x y z } $coords($a) {}
foreach { kx ky kz } [lindex $rArray($r) 2] {}
foreach { x0 y0 z0 } [lindex $rArray($r) 3] {}
foreach { Fx Fy Fz } { 0. 0. 0.} {}
if { $kx } { set Fx [expr {$kx * ($x0 - $x)} ] }
if { $ky } { set Fy [expr {$ky * ($y0 - $y)} ] }
if { $kz } { set Fz [expr {$kz * ($z0 - $z)} ] }
addforce $a [list $Fx $Fy $Fz]
}
} ;# switch $type
} ;# foreach
} ;# namespace
} ;# proc restraints
#################################################
# End of procedure definitions #
#################################################
namespace eval ::ABF {
# coordinate-specific startup procedure
ABFstartup
if { [info exists restraintList] } {
array set rArray $restraintList
set restraintsOn 1
restraints_init
} else {set restraintsOn 0}
} ;# namespace
return ;# otherwise return value is 0

Просмотреть файл

@ -0,0 +1,88 @@
##########################################################################
# ABF procedures for the distance along a vector between two atom groups #
# Jerome Henin <jerome.henin@uhp-nancy.fr> #
##########################################################################
set ABFcoordID "Distance between two atom groups along a vector"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
dxi 0.2
direction {0.0 0.0 1.0}
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
print "ABF> Direction for RC: " $::ABF::direction
set direction [vecnorm $::ABF::direction]
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
foreach a $abf1 {addatom $a}
foreach a $abf2 {addatom $a}
set g1 [addgroup $abf1]
set g2 [addgroup $abf2]
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
set x1 [vecdot $coords($g1) $direction]
set x2 [vecdot $coords($g2) $direction]
return [expr $x2 - $x1]
}
}
############################################################
# ABForce : returns force along reaction coordinate #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
loadtotalforces forces
set f1 0.0
foreach a $abf1 { set f1 [expr $f1 + [vecdot $forces($a) $direction]]}
set f2 0.0
foreach a $abf2 { set f2 [expr $f2 + [vecdot $forces($a) $direction]]}
return [expr ($f2 - $f1) / 2.0]
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
set F2 [vecscale $force $direction]
addforce $g1 [vecinvert $F2]
addforce $g2 $F2
}
return $force
}

Просмотреть файл

@ -0,0 +1,96 @@
#########################################################
# ABF procedures for a distance between two atom groups #
#########################################################
set ABFcoordID "Distance between COM of two atom groups"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
temp 300.0
dxi 0.1
dSmooth 0.2
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
# we need this for 'loadtotalforces'
foreach a $abf1 {addatom $a}
foreach a $abf2 {addatom $a}
# this one is convenient for 'loadcoords' and 'addforce'
set group1 [ addgroup $abf1 ]
set group2 [ addgroup $abf2 ]
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
set r [veclength [vecsub $coords($group2) $coords($group1)]]
return $r
}
}
############################################################
# ABForce : returns force along reaction coordinate #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
set dr [vecsub $coords($group2) $coords($group1)]
set nv [vecnorm $dr] ;# unity vector
loadtotalforces forces
set f1 0.0
foreach a $abf1 { set f1 [expr {$f1 + [vecdot $forces($a) $nv]}]}
set f2 0.0
foreach a $abf2 { set f2 [expr {$f2 + [vecdot $forces($a) $nv]}]}
return [expr {($f2 - $f1) / 2.0}]
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
set dr [vecsub $coords($group2) $coords($group1)]
set r [veclength $dr]
set nv [vecnorm $dr] ;# unity vector group1 -> group2
# compensate for the Jacobian term 2kT/r
set force [expr {$force - 2.0 * 0.001986 * $::ABF::temp / $r}]
set F2 [vecscale $force $nv]
addforce $group1 [vecinvert $F2]
addforce $group2 $F2
return $force
}
}

Просмотреть файл

@ -0,0 +1,91 @@
###################################################
# ABF procedures for a distance between two atoms #
# Jerome Henin <jerome.henin@uhp-nancy.fr> #
###################################################
set ABFcoordID "Distance between two atoms (beware of constraints!)"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
temp 300.0
dxi 0.1
dSmooth 0.3
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
addatom $abf1
addatom $abf2
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
# called first #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
set r [veclength [vecsub $coords($abf2) $coords($abf1)]]
return $r
}
}
############################################################
# ABForce : returns force along reaction coordinate #
# called third #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
set dr [vecsub $coords($abf2) $coords($abf1)]
set nv [vecnorm $dr] ;# unity vector
loadtotalforces forces
set df [vecsub $forces($abf2) $forces($abf1)]
# Not including Jacobian term (2kT / r)
return [expr {[vecdot $df $nv]/ 2.0}]
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
set dr [vecsub $coords($abf2) $coords($abf1)]
set r [veclength $dr]
set nv [vecnorm $dr] ;# unity vector abf1 -> abf2
set force [expr {$force - 2.0 * 0.001986 * $::ABF::temp / $r}]
# compensate for the Jacobian term
set F2 [vecscale $force $nv]
addforce $abf1 [vecinvert $F2]
addforce $abf2 $F2
return $force
}
}

Просмотреть файл

@ -0,0 +1,14 @@
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
package ifneeded abf 1.6.0 [list source [file join $dir abf.tcl]]
package ifneeded vectors 1.0.0 [list source [file join $dir vectors.tcl]]

Просмотреть файл

@ -0,0 +1,362 @@
#########################################################################
# #
# (C) Copyright 1995-2003 The Board of Trustees of the #
# University of Illinois #
# All Rights Reserved #
# #
#########################################################################
############################################################################
# RCS INFORMATION:
#
# $RCSfile: vectors.tcl,v $
# $Author: jim $ $Locker: $ $State: Exp $
# $Revision: 1.2 $ $Date: 2005/07/21 20:46:02 $
#
############################################################################
# DESCRIPTION:
# These routines handle the vector and matrix manipulations needed for
# doing 3D transformations.
#
############################################################################
# This is part of the VMD installation.
# For more information about VMD, see http://www.ks.uiuc.edu/Research/vmd
# a vector is a n element list of numbers (in column form)
# a matrix is a 4x4 matrix represeneted as a 4 element list of 4
# 4 elements, in row major form
#
package provide vectors 1.0.0
set M_PI 3.14159265358979323846
# Function: veczero
# Returns : the zero vector, {0 0 0}
proc veczero {} {
return {0 0 0}
}
# Function: vecdist {vector v1} {vector v2}
# Returns : || v2 - v1 ||
# This is syntactic sugar.
proc vecdist {x y} {
veclength [vecsub $x $y]
}
# Function: vecdot {vector x} {vector y}
# Returns : the vector dot product v1 * v2
proc vecdot {x y} {
if {[llength $x] != [llength $y]} {
error "vecdot needs vectors of the same size: $x : $y"
}
set ret 0
foreach t1 $x t2 $y {
set ret [expr $ret + $t1 * $t2]
}
return $ret
}
# Function: veccross {v1} {v2}
# Returns : cross product of v1 and v2
proc veccross {x y} {
# J. Henin, 11/2004
# lassign is not available in NAMD's Tcl interpreter
# lassign $x x1 x2 x3
# lassign $y y1 y2 y3
foreach {x1 x2 x3} $x {}
foreach {y1 y2 y3} $y {}
# J. Henin, 11/2004 - end
set ret {}
lappend ret [expr $x2 * $y3 - $y2 * $x3]
lappend ret [expr - $x1 * $y3 + $y1 * $x3]
lappend ret [expr $x1 * $y2 - $y1 * $x2]
return $ret
}
# Function: veclength2 {v}
# Returns: the square of the vector length
proc veclength2 {v} {
set retval 0
foreach term $v {
set retval [expr $retval + $term * $term]
}
return $retval
}
# Function: vecnorm {v}
# Returns: the normal vector pointing along v
proc vecnorm {v} {
set sum [veclength $v]
set retval {}
foreach term $v {
lappend retval [expr $term / $sum]
}
return $retval
}
# Function: vecinvert {v}
# Returns: a vector with all terms inverted
proc vecinvert {v} {
set ret {}
foreach i $v {
lappend ret [expr -$i]
}
return $ret
}
# Function: coordtrans {matrix} {vector}
# Returns : the vector = {matrix} * {vector}
# If the matrix is 4x4 and the vector is length 3, the 4th element is 1
proc coordtrans {m v} {
if { [llength $v] == 3} {
lappend v 1
return [lrange [vectrans $m $v] 0 2]
}
return [vectrans $m $v]
}
# Function: transidentity
# Returns: the identity matrix
proc transidentity { } {
return "{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} {0.0 0.0 1.0 0.0} {0.0 0.0 0.0 1.0}"
}
# Function: transtranspose {matrix}
# Returns : the transpose of the matrix, as a matrix -- must be 4x4
proc transtranspose {m} {
lassign $m m1 m2 m3 m4
lassign $m1 m11 m12 m13 m14
lassign $m2 m21 m22 m23 m24
lassign $m3 m31 m32 m33 m34
lassign $m4 m41 m42 m43 m44
set retval {}
lappend retval [concat $m11 $m21 $m31 $m41]
lappend retval [concat $m12 $m22 $m32 $m42]
lappend retval [concat $m13 $m23 $m33 $m43]
lappend retval [concat $m14 $m24 $m34 $m44]
return $retval
}
# Function: find_rotation_value <list reference>
# Returns: value of the rotation in radians with the appropriate
# list elements removed
proc find_rotation_value {varname} {
global M_PI
upvar $varname a
if {![info exists a]} {
error "find_rotation_value: don't know upvar $varname"
}
set amount [expr [lvarpop a] + 0.0]
set units [lvarpop a]
if {$units == "rad" || $units == "radians" || $units == "radian"} {
# set amount $amount
} elseif {$units == "pi"} {
set amount [expr $amount * $M_PI]
} elseif {$units == "deg" || $units == "degrees" || $units == "degree"} {
set amount [expr $amount / 180.0 * $M_PI]
} else {
if {$units != ""} {
lvarpush a $units
}
# default is degrees
set amount [expr $amount / 180.0 * $M_PI]
}
return $amount
}
# Function: transaxis {'x' | 'y' | 'z'} amount { | deg | rad | pi }
# Returns: the matrix to rotate "amount" radians about the given axis
# the default angle measurement is "degrees"
proc transaxis {axis args} {
global M_PI
if { $axis != "x" && $axis != "y" && $axis != "z" } {
error "transaxis must get either x, y, or z, not $axis"
}
set amount [find_rotation_value args]
if { $args != ""} {
error "Unknown angle measurement '$args' in transaxis"
}
set cos [expr cos($amount)]
set mcos [expr -$cos]
set sin [expr sin($amount)]
set msin [expr -$sin]
if { $axis == "x" } {
set retval "{1.0 0.0 0.0 0.0}"
lappend retval [concat 0.0 $cos $msin 0.0]
lappend retval [concat 0.0 $sin $cos 0.0]
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
if { $axis == "y" } {
set retval {}
lappend retval [concat $cos 0.0 $sin 0.0]
lappend retval {0.0 1.0 0.0 0.0}
lappend retval [concat $msin 0.0 $cos 0.0]
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
if { $axis == "z" } {
set retval {}
lappend retval [concat $cos $msin 0.0 0.0]
lappend retval [concat $sin $cos 0.0 0.0]
lappend retval {0.0 0.0 1.0 0.0}
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
}
# Function: transoffset <vector>
# Returns: the matrix needed to translate by vector
proc transoffset {v} {
lassign $v x y z
return "{1.0 0.0 0.0 $x} {0.0 1.0 0.0 $y} {0.0 0.0 1.0 $z} {0.0 0.0 0.0 1.0}"
}
# Function: transabout <vector> amount { | deg | rad | pi }
# Returns: rotation matrix the given amount around the given axis
proc transabout {axis args} {
lassign $args amount units
set transf [transvec $axis]
set transfinv [transvecinv $axis]
set rot [transaxis x $amount $units]
return [transmult $transf $rot $transfinv]
}
# Function: trans
# this has lots of options
#
proc trans {args} {
set origin {0.0 0.0 0.0}
set offset {0.0 0.0 0.0}
set axis {1.0 0.0 0.0}
set amount 0
set rotmat [transidentity]
while { [set keyword [lvarpop args]] != ""} {
if { $keyword == "origin" } {
set origin [lvarpop args]
continue
}
if { $keyword == "offset" } {
set offset [lvarpop args]
continue
}
if { $keyword == "center" } {
set offset [lvarpop args]
set origin $offset
continue
}
# alias 'x' to 'axis x', 'y' to 'axis y', 'z' to 'axis z'
if { $keyword == "x" || $keyword == "y" || $keyword == "z"} {
lvarpush args $keyword
set keyword "axis"
}
if { $keyword == "axis" } {
set axis [lvarpop args]
if {$axis == "x"} {
set axis {1.0 0.0 0.0}
} elseif {$axis == "y"} {
set axis {0.0 1.0 0.0}
} elseif {$axis == "z"} {
set axis {0.0 0.0 1.0}
} elseif {[llength $axis] != 3} {
error "transform: axis must be 'x', 'y', 'z' or a vector, not $axis"
}
# find out how much to rotate
set amount [find_rotation_value args]
# and apply to the current rotation matrix
set rotmat [transmult [transabout $axis $amount rad] $rotmat]
set axis {1.0 0.0 0.0}
set amount 0.0
continue
}
if { $keyword == "bond" } {
set v1 [lvarpop args]
set v2 [lvarpop args]
set origin $v1
set offset $v1
set axis [vecsub $v2 $v1]
# find out how much to rotate
set amount [find_rotation_value args]
# puts "Axis is: $axis"
set rotmat [transabout $axis $amount rad]
# puts "Rotmat is: $rotmat"
continue
}
if { $keyword == "angle" } {
set v1 [lvarpop args]
set v2 [lvarpop args]
set v3 [lvarpop args]
set origin $v2
set offset $v2
set axis [veccross [vecsub $v2 $v1] [vecsub $v3 $v2]]
if {[veclength $axis] <= 0.0} {
if {[veclength [veccross [vecnorm [vecsub $v1 $v2]] {1.0 0.0 0.0}]] < 0.01} {
set axis {0.0 0.0 1.0}
puts "Warning: transform found degenerate 'angle'; using z axis"
} else {
set axis {1.0 0.0 0.0}
puts "Warning: transform found degenerate 'angle'; using x axis"
}
} else {
set axis [vecnorm $axis]
}
# find out how much to rotate
set amount [find_rotation_value args]
set rotmat [transabout $axis $amount rad]
continue
}
error "Unknown command for 'transform': $keyword"
}
# end of while loop
set origmat [transoffset [vecinvert $origin]]
set offsetmat [transoffset $offset]
# puts "Orig: $origmat"
# puts "Offset: $offsetmat"
# puts "Rotmat: $rotmat"
# puts [list Result: [transmult $offsetmat $rotmat $origmat]]
return [transmult $offsetmat $rotmat $origmat]
}
# end of "transform"
# Function: trans_from_rotate
# Returns a transformation matrix given a 3x3 rotation matrix
proc trans_from_rotate {rotate} {
lassign $rotate a b c
return "{$a 0} {$b 0} {$c 0} {0 0 0 1}"
}
# Function: trans_to_rotate
# Returns: the upper left 3x3 rotation component
proc trans_to_rotate {trans_matrix} {
lassign $trans_matrix a b c
lassign $a a1 a2 a3
lassign $b b1 b2 b3
lassign $c c1 c2 c3
return "{$a1 $a2 $a3} {$b1 $b2 $b3} {$c1 $c2 $c3}"
}
# Function: trans_from_offset
# Returns: the transformation corresponding to an offset vector
proc trans_from_offset {offset} {
return [transoffset $offset]
}
# Function: trans_to_offset
# Returns: the transformation offset of the given matrix
proc trans_to_offset {trans_matrix} {
return [coordtrans $trans_matrix {0 0 0}]
}
# set nothing "Okay!"

Просмотреть файл

@ -0,0 +1,98 @@
#########################################################
# ABF procedures for a distance between two atom groups #
#########################################################
set ABFcoordID "2D-distance between COM of two atom groups"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
temp 300.0
dxi 0.1
dSmooth 0.2
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
# we need this for 'loadtotalforces'
foreach a $abf1 {addatom $a}
foreach a $abf2 {addatom $a}
# this one is convenient for 'loadcoords' and 'addforce'
set g1 [ addgroup $abf1 ]
set g2 [ addgroup $abf2 ]
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
foreach {vx vy vz} [vecsub $coords($g2) $coords($g1)] {}
set r [expr {sqrt($vx*$vx + $vy*$vy)} ]
return $r
}
}
############################################################
# ABForce : returns force along reaction coordinate #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
# ABFcoord has already been called (last timestep)
# vx vy vz are set
set nv [vecnorm "$vx $vy 0."] ;# unity vector
loadtotalforces forces
set f1 0.0
foreach a $abf1 { set f1 [expr {$f1 + [vecdot $forces($a) $nv]} ]}
set f2 0.0
foreach a $abf2 { set f2 [expr {$f2 + [vecdot $forces($a) $nv]} ]}
return [expr {($f2 - $f1) / 2.0}]
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
# ABFcoord and ABFthermoForce have been called
# {vx vy vz} and r are set
set nv [vecnorm "$vx $vy 0."] ;# unity vector
# compensate for the Jacobian term kT/r
set force [expr {$force - 0.001986 * $::ABF::temp / $r}]
set F2 [vecscale $force $nv]
addforce $g1 [vecinvert $F2]
addforce $g2 $F2
return $force
}
}

Просмотреть файл

@ -0,0 +1,78 @@
##########################################################################
# ABF procedures for the z coordinate of one atom wrt the COM of a group #
##########################################################################
# Using the actual com of the reference group, and applying force to the group
# This IS rigorous : the force is applied along the gradient, and
# dx/dxi is chosen with zero contributions on the reference atoms
set ABFcoordID "z coordinate of one atom wrt the COM of a group"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
dxi 0.1
dSmooth 0.0
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
addatom $abf2
set g [addgroup $abf1]
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
return [expr [lindex $coords($abf2) 2] - [lindex $coords($g) 2]]
}
}
############################################################
# ABForce : returns force along reaction coordinate #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
loadtotalforces forces
return [lindex $forces($abf2) 2]
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
set F2 [vecscale $force "0.0 0.0 1.0"]
addforce $g [vecinvert $F2]
addforce $abf2 $F2
}
return $force
}

Просмотреть файл

@ -0,0 +1,82 @@
##########################################################################
# ABF procedures for the z coordinate of a group wrt another group #
##########################################################################
# Using the actual com of the reference group, and applying force to the group
# This IS rigorous : the force is applied along the gradient, and
# dx/dxi is chosen with zero contributions on the reference atoms
set ABFcoordID "z coordinate of a group wrt another group"
# Define coordinate-specific optional parameters with default values
array set ABFoptions {
dxi 0.1
dSmooth 0.0
}
###############################################################
# ABFstartup : declares atoms whose coordinates are requested #
###############################################################
proc ABFstartup {} {
namespace eval ABFcoord {
set abf1 $::ABF::abf1
set abf2 $::ABF::abf2
foreach a $abf2 {addatom $a}
set g1 [addgroup $abf1]
set g2 [addgroup $abf2]
}
}
################################################################
# ABFcoord : reads coord, returns value of reaction coordinate #
################################################################
proc ABFcoord {} {
namespace eval ABFcoord {
loadcoords coords
return [expr [lindex $coords($g2) 2] - [lindex $coords($g1) 2]]
}
}
############################################################
# ABForce : returns force along reaction coordinate #
############################################################
proc ABForce {} {
namespace eval ABFcoord {
loadtotalforces forces
set f2 0
foreach a $abf2 {
set f2 [expr {$f2 + [lindex $forces($a) 2] } ]
}
return $f2
}
}
###############################################################################
# ABFapply : applies the force given as a parameter along reaction coordinate #
###############################################################################
proc ABFapply {force} {
set ABFcoord::force $force
namespace eval ABFcoord {
set F2 [vecscale $force "0.0 0.0 1.0"]
addforce $g1 [vecinvert $F2]
addforce $g2 $F2
}
return $force
}

Просмотреть файл

@ -0,0 +1,315 @@
#include "abf_data.h"
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <ctime>
/// Construct gradient field object from an ABF-saved file
ABFdata::ABFdata(const char *gradFileName)
{
std::ifstream gradFile;
std::ifstream countFile;
int n;
char hash;
double xi;
char *countFileName;
countFileName = new char[strlen (gradFileName) + 2];
strcpy (countFileName, gradFileName);
countFileName[strlen (gradFileName) - 4] = '\0';
strcat (countFileName, "count");
std::cout << "Opening file " << gradFileName << " for reading\n";
gradFile.open(gradFileName);
if (!gradFile.good()) {
std::cerr << "Cannot read from file " << gradFileName << ", aborting\n";
exit(1);
}
gradFile >> hash;
if (hash != '#') {
std::cerr << "Missing \'#\' sign in gradient file\n";
exit(1);
}
gradFile >> Nvars;
std::cout << "Number of variables: " << Nvars << "\n";
sizes = new int[Nvars];
blocksizes = new int[Nvars];
PBC = new int[Nvars];
widths = new double[Nvars];
mins = new double[Nvars];
scalar_dim = 1; // total is (n1 * n2 * ... * n_Nvars )
for (int i = 0; i < Nvars; i++) {
gradFile >> hash;
if (hash != '#') {
std::cerr << "Missing \'#\' sign in gradient file\n";
exit(1);
}
// format is: xiMin dxi Nbins PBCflag
gradFile >> mins[i] >> widths[i] >> sizes[i] >> PBC[i];
std::cout << "min = " << mins[i] << " width = " << widths[i]
<< " n = " << sizes[i] << " PBC: " << (PBC[i]?"yes":"no") << "\n";
if (sizes[i] == 0) {
std::cout << "ERROR: size should not be zero!\n";
exit(1);
}
scalar_dim *= sizes[i];
}
// block sizes, smallest for the last dimension
blocksizes[Nvars - 1] = 1;
for (int i = Nvars - 2; i >= 0; i--) {
blocksizes[i] = blocksizes[i + 1] * sizes[i + 1];
}
vec_dim = scalar_dim * Nvars;
//std::cout << "Gradient field has length " << vec_dim << "\n";
gradients = new double[vec_dim];
estimate = new double[vec_dim];
deviation = new double[vec_dim];
count = new unsigned int[scalar_dim];
for (unsigned int i = 0; i < scalar_dim; i++) {
for (unsigned int j = 0; j < Nvars; j++) {
// Read and ignore values of the collective variables
gradFile >> xi;
}
for (unsigned int j = 0; j < Nvars; j++) {
// Read and store gradients
gradFile >> gradients[i * Nvars + j];
}
}
// Could check for end-of-file string here
gradFile.close();
std::cout << "Opening file " << countFileName << " for reading\n";
countFile.open(countFileName);
if (!countFile.good()) {
std::cerr << "Cannot read from file " << countFileName << ", aborting\n";
exit(1);
}
countFile >> hash;
if (hash != '#') {
std::cerr << "Missing \'#\' sign in count file\n";
exit(1);
}
countFile >> Nvars;
for (int i = 0; i < Nvars; i++) {
countFile >> hash;
if (hash != '#') {
std::cerr << "Missing \'#\' sign in gradient file\n";
exit(1);
}
countFile >> mins[i] >> widths[i] >> sizes[i] >> PBC[i];
}
for (unsigned int i = 0; i < scalar_dim; i++) {
for (unsigned int j = 0; j < Nvars; j++) {
// Read and ignore values of the collective variables
countFile >> xi;
}
// Read and store counts
countFile >> count[i];
}
// Could check for end-of-file string here
countFile.close();
delete [] countFileName;
// for metadynamics
bias = new double[scalar_dim];
histogram = new unsigned int[scalar_dim];
for (unsigned int i = 0; i < scalar_dim; i++) {
histogram[i] = 0;
bias[i] = 0.0;
}
}
ABFdata::~ABFdata()
{
delete[] sizes;
delete[] blocksizes;
delete[] PBC;
delete[] widths;
delete[] mins;
delete[] gradients;
delete[] estimate;
delete[] deviation;
delete[] count;
delete[] bias;
delete[] histogram;
}
unsigned int ABFdata::offset(const int *pos)
{
unsigned int index = 0;
for (int i = 0; i < Nvars; i++) {
// Check for out-of bounds indices here
if (pos[i] < 0 || pos[i] >= sizes[i]) {
std::cerr << "Out-of-range index: " << pos[i] << " for rank " << i << "\n";
exit(1);
}
index += blocksizes[i] * pos[i];
}
// we leave the multiplication below for the caller to do
// we just give the offset for scalar fields
// index *= Nvars; // Nb of gradient vectors -> nb of array elts
return index;
}
void ABFdata::write_histogram(const char *fileName)
{
std::ofstream os;
unsigned int index;
int *pos, i;
os.open(fileName);
if (!os.good()) {
std::cerr << "Cannot write to file " << fileName << ", aborting\n";
exit(1);
}
pos = new int[Nvars];
for (i = 0; i < Nvars; i++)
pos[i] = 0;
for (index = 0; index < scalar_dim; index++) {
// Here we do the Euclidian division iteratively
for (i = Nvars - 1; i > 0; i--) {
if (pos[i] == sizes[i]) {
pos[i] = 0;
pos[i - 1]++;
os << "\n";
}
}
// Now a stupid check:
if (index != offset(pos)) {
std::cerr << "Wrong position vector at index " << index << "\n";
exit(1);
}
for (i = 0; i < Nvars; i++) {
os << mins[i] + widths[i] * (pos[i] + 0.5) << " ";
}
os << histogram[index] << "\n";
pos[Nvars - 1]++; // move on to next position
}
os.close();
delete[]pos;
}
void ABFdata::write_bias(const char *fileName)
{
// write the opposite of the bias, with global minimum set to 0
std::ofstream os;
unsigned int index;
int *pos, i;
double minbias, maxbias;
os.open(fileName);
if (!os.good()) {
std::cerr << "Cannot write to file " << fileName << ", aborting\n";
exit(1);
}
pos = new int[Nvars];
for (i = 0; i < Nvars; i++)
pos[i] = 0;
// Set the minimum value to 0 by subtracting each value from the max
maxbias = bias[0];
for (index = 0; index < scalar_dim; index++) {
if (bias[index] > maxbias)
maxbias = bias[index];
}
// Set the maximum value to that of the lowest nonzero bias
minbias = bias[0];
for (index = 0; index < scalar_dim; index++) {
if (minbias == 0.0 || (bias[index] > 0.0 && bias[index] < minbias))
minbias = bias[index];
}
for (index = 0; index < scalar_dim; index++) {
// Here we do the Euclidian division iteratively
for (i = Nvars - 1; i > 0; i--) {
if (pos[i] == sizes[i]) {
pos[i] = 0;
pos[i - 1]++;
os << "\n";
}
}
// Now a stupid check:
if (index != offset(pos)) {
std::cerr << "Wrong position vector at index " << index << "\n";
exit(1);
}
for (i = 0; i < Nvars; i++) {
os << mins[i] + widths[i] * (pos[i] + 0.5) << " ";
}
os << maxbias - (bias[index] > 0.0 ? bias[index] : minbias) << "\n";
pos[Nvars - 1]++; // move on to next position
}
os.close();
delete[]pos;
}
void ABFdata::write_field(double *field, const char *fileName)
{
std::ofstream os;
unsigned int index;
int *pos, i;
double *f;
os.open(fileName);
if (!os.good()) {
std::cerr << "Cannot write to file " << fileName << ", aborting\n";
exit(1);
}
pos = new int[Nvars];
for (i = 0; i < Nvars; i++)
pos[i] = 0;
// start at beginning of array
f = field;
for (index = 0; index < scalar_dim; index++) {
// Here we do the Euclidian division iteratively
for (i = Nvars - 1; i > 0; i--) {
if (pos[i] == sizes[i]) {
pos[i] = 0;
pos[i - 1]++;
os << "\n";
}
}
for (i = 0; i < Nvars; i++) {
os << mins[i] + widths[i] * (pos[i] + 0.5) << " ";
}
for (i = 0; i < Nvars; i++) {
os << f[i] << " ";;
}
os << "\n";
pos[Nvars - 1]++; // move on to next position...
f += Nvars; // ...also in the array
}
os.close();
delete[]pos;
}

Просмотреть файл

@ -0,0 +1,94 @@
/// \file integrate.h General headers for ABF_integrate
#include <iostream>
#include <vector>
#define MIN_SAMPLES 1
/// Free energy gradients class
class ABFdata {
protected:
/// Sizes of (i-1) dimension blocks
/// computed as Prod_(j<i) sizes[j]
int *blocksizes;
/// Minimum values of each variable
double *mins;
public:
int Nvars;
/// Free energy gradients (vector field)
double *gradients;
/// Sampling from the ABF calculation
unsigned int *count;
/// Bin widths
double *widths;
unsigned int scalar_dim;
unsigned int vec_dim;
unsigned int *histogram;
/// History-dependent bias
double *bias;
/// Estimate of the FE gradient computed
/// from MtD bias or histogram in standard MC
double *estimate;
/// Deviation between starting free energy gradient and
/// estimated one
double *deviation;
void write_histogram(const char *fileName);
void write_bias(const char *fileName);
void write_field(double *field, const char *fileName);
/// Grid sizes
int *sizes;
/// Flag stating if each variable is periodic
int *PBC;
/// Constructor: reads from a file
ABFdata(const char *gradFileName);
~ABFdata();
/// \brief Returns an offset for scalar fields based on a n-index.
/// multiply by Nvars to get an offset in a Nvars-vector field
unsigned int offset(const int *);
inline bool wrap(int &pos, int i);
/// Decides if an offset is outside the allowed region based on the ABF sampling
inline bool allowed(unsigned int offset);
};
inline bool ABFdata::wrap(int &pos, int i)
{
if (PBC[i]) {
if (pos == -1) {
pos = sizes[i] - 1;
return true;
}
if (pos == sizes[i]) {
pos = 0;
return true;
}
} else {
// No PBC
if (pos == -1) {
pos = 0;
return false;
}
if (pos == sizes[i]) {
pos = sizes[i] - 1;
return false;
}
}
return true;
}
inline bool ABFdata::allowed(unsigned int offset) {
return count[offset] > MIN_SAMPLES;
}

Просмотреть файл

@ -0,0 +1,343 @@
/****************************************************************
* abf_integrate *
* Integrate n-dimensional PMF from discrete gradient grid *
* Jerome Henin <jhenin@ifr88.cnrs-mrs.fr> *
****************************************************************/
#include "abf_data.h"
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
char *parse_cl(int argc, char *argv[], unsigned int *nsteps, double *temp,
bool * meta, double *hill, double *hill_fact);
double compute_deviation(ABFdata * data, bool meta, double kT);
int main(int argc, char *argv[])
{
char *data_file;
char *out_file;
unsigned int step, nsteps, total, out_freq;
int *pos, *dpos, *newpos;
unsigned int *histogram;
const double *grad, *newgrad;
unsigned int offset, newoffset;
int not_accepted;
double dA;
double temp;
double mbeta;
bool meta;
double hill, hill_fact, hill_min;
double rmsd, rmsd_old, rmsd_rel_change, convergence_limit;
bool converged;
unsigned int scale_hill_step;
// Setting default values
nsteps = 0;
temp = 500;
meta = true;
hill = 0.01;
hill_fact = 0.5;
hill_min = 0.0005;
convergence_limit = -0.001;
if (!(data_file = parse_cl(argc, argv, &nsteps, &temp, &meta, &hill, &hill_fact))) {
std::cerr << "\nabf_integrate: MC-based integration of multidimensional free energy gradient\n";
std::cerr << "Version 20110511\n\n";
std::cerr << "Syntax: " << argv[0] <<
" <filename> [-n <nsteps>] [-t <temp>] [-m [0|1] (metadynamics)]"
" [-h <hill_height>] [-f <variable_hill_factor>]\n\n";
exit(1);
}
if (meta) {
std::cout << "\nUsing metadynamics-style sampling with hill height: " << hill << "\n";
if (hill_fact) {
std::cout << "Varying hill height by factor " << hill_fact << "\n";
}
} else {
std::cout << "\nUsing unbiased MC sampling\n";
}
if (nsteps) {
std::cout << "Sampling " << nsteps << " steps at temperature " << temp << "\n\n";
out_freq = nsteps / 10;
scale_hill_step = nsteps / 2;
converged = true;
} else {
std::cout << "Sampling until convergence at temperature " << temp << "\n\n";
out_freq = 1000000;
converged = false;
}
// Inverse temperature in (kcal/mol)-1
mbeta = -1 / (0.001987 * temp);
ABFdata data(data_file);
if (!nsteps) {
scale_hill_step = 2000 * data.scalar_dim;
nsteps = 2 * scale_hill_step;
std::cout << "Setting minimum number of steps to " << nsteps << "\n";
}
srand(time(NULL));
pos = new int[data.Nvars];
dpos = new int[data.Nvars];
newpos = new int[data.Nvars];
do {
for (int i = 0; i < data.Nvars; i++) {
pos[i] = rand() % data.sizes[i];
}
offset = data.offset(pos);
} while ( !data.allowed (offset) );
rmsd = compute_deviation(&data, meta, 0.001987 * temp);
std::cout << "\nInitial gradient RMS is " << rmsd << "\n";
total = 0;
for (step = 1; (step <= nsteps || !converged); step++) {
if ( step % out_freq == 0) {
rmsd_old = rmsd;
rmsd = compute_deviation(&data, meta, 0.001987 * temp);
rmsd_rel_change = (rmsd - rmsd_old) / (rmsd_old * double (out_freq)) * 1000000.0;
std::cout << "Step " << step << " ; gradient RMSD is " << rmsd
<< " ; relative change per 1M steps " << rmsd_rel_change;
if ( rmsd_rel_change > convergence_limit && step >= nsteps ) {
converged = true;
}
if (meta && hill_fact && step > scale_hill_step && hill > hill_min ) {
hill *= hill_fact;
std::cout << " - changing hill height to " << hill << "\n";
} else {
std::cout << "\n";
}
}
offset = data.offset(pos);
data.histogram[offset]++;
if (meta) {
data.bias[offset] += hill;
}
grad = data.gradients + offset * data.Nvars;
not_accepted = 1;
while (not_accepted) {
dA = 0.0;
total++;
for (int i = 0; i < data.Nvars; i++) {
dpos[i] = rand() % 3 - 1;
newpos[i] = pos[i] + dpos[i];
data.wrap(newpos[i], i);
if (newpos[i] == pos[i])
dpos[i] = 0;
if (dpos[i]) {
dA += grad[i] * dpos[i] * data.widths[i];
// usefulness of the interpolation below depends on
// where the grid points are for the histogram wrt to the gradients
// If done, it has to be done in all directions
// the line below is useless
//dA += 0.5 * (newgrad[i] + grad[i]) * dpos[i] * data.widths[i];
}
}
newoffset = data.offset(newpos);
if (meta) {
dA += data.bias[newoffset] - data.bias[offset];
}
if ( data.allowed (newoffset) && (((float) rand()) / RAND_MAX < exp(mbeta * dA)) ) {
// Accept move
for (int i = 0; i < data.Nvars; i++) {
pos[i] = newpos[i];
not_accepted = 0;
}
}
}
}
std::cout << "Run " << total << " total iterations; acceptance ratio is "
<< double (step) / double (total)
<< " ; final gradient RMSD is " << compute_deviation(&data, meta, 0.001987 * temp) << "\n";
out_file = new char[strlen(data_file) + 8];
if (meta) {
sprintf(out_file, "%s.pmf", data_file);
std::cout << "Writing PMF to file " << out_file << "\n";
data.write_bias(out_file);
}
// TODO write a PMF for unbiased MC, too...
sprintf(out_file, "%s.histo", data_file);
std::cout << "Writing sampling histogram to file " << out_file << "\n";
data.write_histogram(out_file);
sprintf(out_file, "%s.est", data_file);
std::cout << "Writing estimated FE gradient to file " << out_file << "\n";
data.write_field(data.estimate, out_file);
sprintf(out_file, "%s.dev", data_file);
std::cout << "Writing FE gradient deviation to file " << out_file << "\n\n";
data.write_field(data.deviation, out_file);
delete [] pos;
delete [] dpos;
delete [] newpos;
delete [] out_file;
exit(0);
}
double compute_deviation(ABFdata * data, bool meta, double kT)
{
// Computing deviation between gradients differentiated from pmf
// and input data
// NOTE: this is mostly for output, hence NOT performance-critical
double *dev = data->deviation;
double *est = data->estimate;
const double *grad = data->gradients;
int *pos, *dpos, *newpos;
double rmsd = 0.0;
unsigned int offset, newoffset;
double sum;
int c;
bool moved;
unsigned int norm = 0; // number of data points summmed
pos = new int[data->Nvars];
dpos = new int[data->Nvars];
newpos = new int[data->Nvars];
for (int i = 0; i < data->Nvars; i++)
pos[i] = 0;
for (offset = 0; offset < data->scalar_dim; offset++) {
for (int i = data->Nvars - 1; i > 0; i--) {
if (pos[i] == data->sizes[i]) {
pos[i] = 0;
pos[i - 1]++;
}
}
if (data->allowed (offset)) {
for (int i = 0; i < data->Nvars; i++)
newpos[i] = pos[i];
for (int i = 0; i < data->Nvars; i++) {
est[i] = 0.0;
sum = 0.0; // sum of finite differences on two sides (if not on edge of the grid)
c = 0; // count of summed values
newpos[i] = pos[i] - 1;
moved = data->wrap(newpos[i], i);
newoffset = data->offset(newpos);
if ( moved && data->allowed (newoffset) ) {
if (meta) {
sum = (data->bias[newoffset] - data->bias[offset]) / data->widths[i];
c++;
} else {
if (data->histogram[offset] && data->histogram[newoffset]) {
sum = kT * log(double (data->histogram[newoffset]) /
double (data->histogram[offset])) / data->widths[i];
c++;
}
}
}
newpos[i] = pos[i] + 1;
moved = data->wrap(newpos[i], i);
newoffset = data->offset(newpos);
if ( moved && data->allowed (newoffset) ) {
if (meta) {
sum += (data->bias[offset] - data->bias[newoffset]) / data->widths[i];
c++;
} else {
if (data->histogram[offset] && data->histogram[newoffset]) {
sum += kT * log(double (data->histogram[offset]) /
double (data->histogram[newoffset])) / data->widths[i];
c++;
}
}
}
newpos[i] = pos[i]; // Go back to initial position for next dimension
est[i] = (c ? sum/double(c) : 0.0);
dev[i] = grad[i] - est[i];
rmsd += dev[i] * dev[i];
norm++;
}
}
pos[data->Nvars - 1]++; // move on to next point
est += data->Nvars;
dev += data->Nvars;
grad += data->Nvars;
}
delete [] pos;
delete [] newpos;
delete [] dpos;
return sqrt(rmsd / norm);
}
char *parse_cl(int argc, char *argv[], unsigned int *nsteps, double *temp,
bool * meta, double *hill, double *hill_fact)
{
char *filename = NULL;
float f_temp, f_hill;
int meta_int;
// getting default value for the integer
meta_int = (*meta ? 1 : 0);
// "Syntax: " << argv[0] << " <filename> [-n <nsteps>] [-t <temp>] [-m [0|1] (metadynamics)] [-h <hill_height>]\n";
if (argc < 2) {
return NULL;
}
for (int i = 2; i + 1 < argc; i += 2) {
if (argv[i][0] != '-') {
return NULL;
}
switch (argv[i][1]) {
case 'n':
if (sscanf(argv[i + 1], "%u", nsteps) != 1)
return NULL;
break;
case 't':
if (sscanf(argv[i + 1], "%lf", temp) != 1)
return NULL;
break;
case 'm':
if (sscanf(argv[i + 1], "%u", &meta_int) != 1)
return NULL;
break;
case 'h':
if (sscanf(argv[i + 1], "%lf", hill) != 1)
return NULL;
break;
case 'f':
if (sscanf(argv[i + 1], "%lf", hill_fact) != 1)
return NULL;
break;
default:
return NULL;
}
}
*meta = (meta_int != 0);
return argv[1];
}

Просмотреть файл

@ -0,0 +1,81 @@
#include "colvarmodule.h"
#include "colvaratoms.h"
#include "colvarproxy.h"
#include "colvarproxy_standalone.h"
colvarproxy_standalone::colvarproxy_standalone (std::string const &config_filename,
std::string const &input_prefix_in,
std::string const &output_prefix_in)
{
input_prefix_str = input_prefix_in;
if (input_prefix_str.rfind (".colvars.state") != std::string::npos) {
// strip the extension, if present
input_prefix_str.erase (input_prefix_str.rfind (".colvars.state"),
std::string (".colvars.state").size());
}
output_prefix_str = restart_output_prefix_str = output_prefix_in;
colvars = new colvarmodule (config_filename.c_str(), this);
colvars->b_analysis = true;
}
colvarproxy_standalone::~colvarproxy_standalone()
{
delete colvars;
}
cvm::atom::atom (cvm::residue_id const &residue,
std::string const &atom_name,
std::string const &segment_id)
: id (0), mass (1.0)
{
reset_data();
}
cvm::atom::atom (int const &atom_number)
: id (atom_number), mass (1.0)
{
reset_data();
}
// copy constructor
cvm::atom::atom (cvm::atom const &a)
: id (a.id), mass (a.mass)
{
// init_namd_atom() has already been called by a's constructor, no
// need to call it again
reset_data();
}
cvm::atom::~atom()
{}
void cvm::atom::read_position()
{
cvm::fatal_error ("Error: atom data are unavailable in standalone mode.\n");
}
void cvm::atom::read_velocity()
{
cvm::fatal_error ("Error: atom data are unavailable in standalone mode.\n");
}
void cvm::atom::read_system_force()
{
cvm::fatal_error ("Error: atom data are unavailable in standalone mode.\n");
}
void cvm::atom::apply_force (cvm::rvector const &new_force)
{
cvm::fatal_error ("Error: atom data are unavailable in standalone mode.\n");
}

Просмотреть файл

@ -0,0 +1,141 @@
#ifndef COLVARPROXY_STANDALONE_H
#define COLVARPROXY_STANDALONE_H
#include <iostream>
//#include <unistd>
#include "colvarmodule.h"
#include "colvaratoms.h"
#include "colvarproxy.h"
/// \brief Interface class between the collective variables module and
/// the simulation program
class colvarproxy_standalone : public colvarproxy {
protected:
std::string input_prefix_str, output_prefix_str, restart_output_prefix_str;
size_t restart_frequency_int;
public:
/// Constructor
colvarproxy_standalone (std::string const &config_filename,
std::string const &input_prefix_in,
std::string const &output_prefix_in);
/// Destructor
virtual ~colvarproxy_standalone();
virtual inline cvm::real unit_angstrom()
{
return 1.0;
}
virtual cvm::real boltzmann()
{
return 0.001987191;
}
virtual cvm::real temperature()
{
return 300.0;
}
virtual inline void log (std::string const &message)
{
std::cout << message;
}
virtual inline void fatal_error (std::string const &message)
{
cvm::log (message);
if (!cvm::debug())
cvm::log ("If this error message is unclear, "
"try recompile with -DCOLVARS_DEBUG.\n");
::exit (1);
}
virtual inline void exit (std::string const &message)
{
cvm::log (message);
::exit (0);
}
virtual inline std::string input_prefix()
{
return input_prefix_str;
}
virtual inline std::string restart_output_prefix()
{
return restart_output_prefix_str;
}
virtual inline std::string output_prefix()
{
return output_prefix_str;
}
virtual inline size_t restart_frequency()
{
return restart_frequency_int;
}
virtual inline cvm::rvector position_distance (cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
{
return pos2-pos1;
}
virtual inline cvm::real position_dist2 (cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
{
return (pos1-pos2).norm2();
}
virtual inline cvm::rvector position_dist2_lgrad (cvm::atom_pos const &pos1,
cvm::atom_pos const &pos2)
{
return 2.0 * (pos1-pos2);
}
virtual inline void select_closest_image (cvm::atom_pos &pos,
cvm::atom_pos const &ref_pos)
{
return;
}
virtual inline void load_coords (char const *filename,
std::vector<cvm::atom_pos> &pos,
std::string const pdb_field = "O",
double const pdb_field_value = 0.0)
{
return;
}
virtual inline void load_atoms (char const *filename,
std::vector<cvm::atom> &atoms,
std::string const pdb_field = "O",
double const pdb_field_value = 0.0)
{
return;
}
};
#endif
// Emacs
// Local Variables:
// mode: C++
// End:

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,123 @@
#*********************************************************************************** *
# Random Acceleration Molecular Dynamics (RAMD) *
# Implementation for NAMD v2.7 *
# March 2010 *
# *
# Copyright (c) 2009, EML Research gGmbH, Heidelberg, Germany *
# Author: Vlad Cojocaru *
# Email: vlad.cojocaru@eml-r.villa-bosch.de *
#***********************************************************************************
Random Acceleration Molecular Dynamics
RAMD 4.1 implementation in NAMD 2.6, 2.7b2 and above
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
NOTE: It requires NAMD to be compiled against tcl 8.3 or 8.4
NOTE: Further testing is required for the compatibility with tcl 8.5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Scripts (in the './scripts' directory):
ramd-4.1.tcl - 'wrapper' script that is sourced in the NAMD configuration file
ramd-4.1_script.tcl - script that performs the calculations
vectors.tcl - script that defines vector procedures borrowed from VMD
Simulation methods:
Pure RAMD Simulations (RAMD)
Combined RAMD and Standard MD simulations (RAMD-MD)
Reference describing the original method (pure RAMD simulations):
* Luedemann, S.K., Lounnas, V. and R. C. Wade. How do Substrates Enter and Products Exit the Buried Active Site of Cytochrome P450cam ? 1. Random Expulsion Molecular Dynamics Investigation of Ligand Access Channels and Mechanisms. J Mol Biol, 303:797-811 (2000)
(additional references may be found at 'http://projects.eml.org/mcm/software/ramd'
Notes on the current implementation:
(see examples of NAMD configuration files in the ../examples directory for description of input parameters)
*** version 4.1 fixes the following bugs (the implementation and usage is the same as described for version 4.0):
- the scripts are now also compatible with tcl 8.3 (version 4.0 was only compatible with tcl 8.4)
- the exit of NAMD is error free if a ligand exit event occurred
*** version 4.0 is the first released version
*** acceleration is applied on the ligand center of mass ( kcal/mol*A*amu );
ensures compatibility between parameters used for simulations in AMBER 8 and NAMD
*** in pure RAMD simulations the acceleration 'a' is applied throughout the simulation;
1 RAMD block = 'ramdSteps' (input parameter) steps of RAMD simulation
threshold for the distance traveled by the ligand in 1 RAMD block is 'rRamdMin' (input parameter)
the distance traveled by the ligand in 1 RAMD block is 'dr';
the vector direction of 'a' is changed between 2 RAMD blocks if 'dr' < 'rRamdMin'
the vector direction of 'a' is changed if 'dr' < 'rRamdMin'
*** in combined RAMD-MD simulations, RAMD blocks alternate with standard MD blocks
('ramdSteps' and 'mdSteps' input parameters);
1 RAMD block = 'ramdSteps' (input parameter) steps of RAMD simulation
1 MD block = 'mdSteps' (input parameter) steps of standard MD simulation
threshold for the distance traveled by the ligand in 1 RAMD block is 'rRamdMin' (input parameter)
threshold for the distance traveled by the ligand in 1 MD block is 'rMdMin' (input parameter)
the distance between the protein and ligand centers of mass is 'd'
the distance traveled by the ligand in 1 RAMD block is 'dr';
the distance traveled by the ligand in 1 MD block is 'dm'
switch from RAMD to MD
if 'dr' > 'rRamdMin'
no switch if 'dr' < 'rRamdMin'
switch from MD to RAMD
if 'dm' < 'rMdMin' and 'd' > 0 (acceleration direction kept from previous RAMD block)
if 'dm' < 'rMdMin' and 'd' < 0 (acceleration direction changed)
if 'dm' > 'rMdMin' and 'd' < 0 (acceleration direction changed)
no switch id 'dm' > 'rMdMin' and 'd' > 0
*** combined RAMD-MD simulation may be started either with RAMD or with standard MD
(see the 'mdStart' input parameter )
*** forces acting on the ligand (total and external) are recorded and printed
(see input parameter 'forceOutFreq')
the format of the printing is vectorial {Fx Fy Fz} with the length of vector in brackets
the corresponding position (x, y, z) of the ligand COM is printed
input parameters 'mdSteps' and 'ramdSteps' have to be multiples of 'forceOutFreq'
(namd exits with error otherwise)
the forces acting on the ligand due to the simulation system can be obtain by substracting
the external forces from the total forces (this feature will be implemented in a future release;
in the meantime scripts can be written to process the detailed output of this version and
get exactly this information)
in combined RAMD-MD simulation
NAMD exits with an error if external forces are found during the standard MD steps
the forces are written in the default NAMD configuration file; the output is labeled with 'FORCE'
*** the output of RAMD and RAMD-MD simulations is dumped in the default NAMD log file
and is labeled with "RAMD" or "MD" depending whether it is written in a RAMD or MD step
*** debugging option implemented
(see input parameter 'debugLevel')
this parameter is strictly recommended for short test runs
the output is very rich in information and for a long run is confusing.
following information is printed:
comparison of the added external force with the external force printed by 'loadforces' for each atom
(they should have equal values)
counting of the timestep, md steps and ramd steps per block (to make sure it does it correclty)
the output is labeled with 'RAMD DEBUG' or 'MD DEBUG'
*** Simulations stop when a maximum distance between the ligand and protein COMs
is reached ('maxDist' input parameter)
Examples runs for testing are provided in the './examples' directory
File './examples/example_ramd.namdin' is an example of NAMD configuration file for pure RAMD simulation
File './examples/example_ramd-md.namdin' is an example of NAMD configuration file for combined RAMD-MD simulation
IMPORTANT NOTE
There is a significant diffrence between ligand exit times depending on whether Langevin dynamics or
the weak coupling algorithm of Berendsen are used for temperature control. Users are encouraged to run
test runs using both methods and decide what is appropriate for their specific simulation system and setup

Просмотреть файл

@ -0,0 +1,37 @@
RAMD and RAMD-MD simulations examples README
--------------------------------------------
***************************************************************************
Large input and output files have been removed from this directory.
The complete examples may be downloaded from the following locations:
http://www.ks.uiuc.edu/Research/namd/utilities/ramd-4.1-examples.tar.gz
http://www.ks.uiuc.edu/Research/namd/utilities/ramd-4.1-examples.zip
***************************************************************************
The examples provided are the RAMD and RAMD-MD simulations
of (R)-2,3-dichloropropane-1-ol (DCL) exit from the active site of haloalkane wild type dehalogenase DhaA (PDBid 1CQW),
obtained using NAMD v2.7 on 1 processor, applying Berendsen temperature control.
The simulations are based on the work described in:
Klvana, M., Pavlova, M., Koudelakova, T., Chaloupkova, R., Dvorak, P., Prokop, Z.,Stsiapanava, A.,
Kuty, M., Kuta-Smatanova, I., Dohnalek, J., Kulhanek, P., Wade, R.C., Damborsky, J., 2009:
Pathways and Mechanisms for Product Release in the Engineered Haloalkane Dehalogenases
Explored using Classical and Random Acceleration Molecular Dynamics Simulations.
Journal of Molecular Biology 392: 1339-1356.
Please note that in the examples provided here the force constant applied on the ligand
has been increased relative to the values used in the original paper.
This is to encourage a faster exit of the ligand in these test runs.
In any serious application of this technique, it is necessary to adjust the force constant to a suitable value,
depending on the mass of the ligand and on the system under study,
so that the structure of the system is not disrupted by applying the additional force.
For running the examples, two bash scripts are provided: run_ramd_example.sh and run_rmad-md_example.sh.
The scripts should be run in this directory from the command line (e.g. './run_ramd_exampl.sh >& run_ramd.log &')
The output is stored in the 'ramd_output' and 'ramd-md_output' directories. Sample output is provided in the directory
'example_ramd_output' and 'example_ramd-md_output'.
---
2009-12-18
Created by Lada Biedermannova
Link to the RAMD project page: http://projects.eml.org/mcm/software/ramd

Просмотреть файл

@ -0,0 +1,719 @@
namd2 is /sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1/Linux-x86_64-intel-mvapich2/namd2
Linux node-07-01 2.6.25.11-ib-amd64 #8 SMP Wed Jul 23 14:40:21 CEST 2008 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Charm++> Running on MPI version: 2.1 multi-thread support: MPI_THREAD_SINGLE (max supported: MPI_THREAD_SINGLE)
Charm++> cpu topology info is being gathered.
Charm++> 1 unique compute nodes detected.
Info: NAMD CVS for Linux-x86_64
Info:
Info: Please visit http://www.ks.uiuc.edu/Research/namd/
Info: and send feedback or bug reports to namd@ks.uiuc.edu
Info:
Info: Please cite Phillips et al., J. Comp. Chem. 26:1781-1802 (2005)
Info: in all publications reporting results obtained with NAMD.
Info:
Info: Based on Charm++/Converse 60102 for mpi-linux-x86_64-mpicxx
Info: Built Thu Aug 13 16:25:33 CEST 2009 by cojocavd on node-07-01
Info: 1 NAMD CVS Linux-x86_64 1 node-07-01 biederla
Info: Running on 1 processors.
Info: Charm++/Converse parallel runtime startup completed at 0.0584071 s
Info: 70.3672 MB of memory in use based on /proc/self/stat
Info: Configuration file is ramd-md_namd2.7_nproc1_bernd.namdin
TCL: Suspending until startup complete.
Info: SIMULATION PARAMETERS:
Info: TIMESTEP 2
Info: NUMBER OF STEPS 500000
Info: STEPS PER CYCLE 10
Info: PERIODIC CELL BASIS 1 66.7214 0 0
Info: PERIODIC CELL BASIS 2 0 73.1177 0
Info: PERIODIC CELL BASIS 3 0 0 76.7255
Info: PERIODIC CELL CENTER 36.3112 42.2435 34.9181
Info: LOAD BALANCE STRATEGY New Load Balancers -- ASB
Info: LDB PERIOD 2000 steps
Info: FIRST LDB TIMESTEP 50
Info: LAST LDB TIMESTEP -1
Info: LDB BACKGROUND SCALING 1
Info: HOM BACKGROUND SCALING 1
Info: PME BACKGROUND SCALING 1
Info: MAX SELF PARTITIONS 20
Info: MAX PAIR PARTITIONS 8
Info: SELF PARTITION ATOMS 154
Info: SELF2 PARTITION ATOMS 154
Info: PAIR PARTITION ATOMS 318
Info: PAIR2 PARTITION ATOMS 637
Info: MIN ATOMS PER PATCH 100
Info: INITIAL TEMPERATURE 300
Info: CENTER OF MASS MOVING INITIALLY? NO
Info: DIELECTRIC 1
Info: EXCLUDE SCALED ONE-FOUR
Info: 1-4 SCALE FACTOR 0.833333
Info: DCD FILENAME dhaawt_DCL.ramd.cdcd
Info: DCD FREQUENCY 100
Info: DCD FIRST STEP 100
Info: DCD FILE WILL CONTAIN UNIT CELL DATA
Info: NO EXTENDED SYSTEM TRAJECTORY OUTPUT
Info: VELOCITY DCD FILENAME dhaawt_DCL.ramd.vdcd
Info: VELOCITY DCD FREQUENCY 1000
Info: VELOCITY DCD FIRST STEP 1000
Info: OUTPUT FILENAME dhaawt_DCL.ramd
Info: RESTART FILENAME dhaawt_DCL.ramd.rst
Info: RESTART FREQUENCY 100
Info: BINARY RESTART FILES WILL BE USED
Info: CUTOFF 12
Info: PAIRLIST DISTANCE 15
Info: PAIRLIST SHRINK RATE 0.01
Info: PAIRLIST GROW RATE 0.01
Info: PAIRLIST TRIGGER 0.3
Info: PAIRLISTS PER CYCLE 2
Info: PAIRLIST OUTPUT STEPS 1000
Info: PAIRLISTS ENABLED
Info: MARGIN 1
Info: HYDROGEN GROUP CUTOFF 2.5
Info: PATCH DIMENSION 18.5
Info: ENERGY OUTPUT STEPS 100
Info: CROSSTERM ENERGY INCLUDED IN DIHEDRAL
Info: TIMING OUTPUT STEPS 1000
Info: TCL GLOBAL FORCES ACTIVE
Info: TCL GLOBAL FORCES SCRIPT /home/biederla/scripts/namd/ramd-4.0/ramd-4.0_script.tcl
Info: TEMPERATURE COUPLING ACTIVE
Info: COUPLING TEMPERATURE 300
Info: BERENDSEN PRESSURE COUPLING ACTIVE
Info: TARGET PRESSURE IS 1 BAR
Info: COMPRESSIBILITY ESTIMATE IS 4.57e-05 BAR^(-1)
Info: RELAXATION TIME IS 100 FS
Info: APPLIED EVERY 10 STEPS
Info: PRESSURE CONTROL IS GROUP-BASED
Info: CELL FLUCTUATION IS ANISOTROPIC
Info: PARTICLE MESH EWALD (PME) ACTIVE
Info: PME TOLERANCE 1e-06
Info: PME EWALD COEFFICIENT 0.257952
Info: PME INTERPOLATION ORDER 4
Info: PME GRID DIMENSIONS 72 80 80
Info: PME MAXIMUM GRID SPACING 1
Info: Attempting to read FFTW data from FFTW_NAMD_CVS_Linux-x86_64.txt
Info: Optimizing 6 FFT steps. 1... 2... 3... 4... 5... 6... Done.
Info: Writing FFTW data to FFTW_NAMD_CVS_Linux-x86_64.txt
Info: FULL ELECTROSTATIC EVALUATION FREQUENCY 1
Info: USING VERLET I (r-RESPA) MTS SCHEME.
Info: C1 SPLITTING OF LONG RANGE ELECTROSTATICS
Info: PLACING ATOMS IN PATCHES BY HYDROGEN GROUPS
Info: RIGID BONDS TO HYDROGEN : ALL
Info: ERROR TOLERANCE : 1e-08
Info: MAX ITERATIONS : 100
Info: RIGID WATER USING SETTLE ALGORITHM
Info: RANDOM NUMBER SEED 1258967985
Info: USE HYDROGEN BONDS? NO
Info: Using AMBER format force field!
Info: AMBER PARM FILE ../../../data/2009-09-30/ramd_run_input/dhaawt_DCL.top
Info: AMBER COORDINATE FILE ../../../data/2009-09-30/ramd_run_input/dhaawt_DCL.emd2.rst
Info: Exclusions will be read from PARM file!
Info: SCNB (VDW SCALING) 2
Info: USING ARITHMETIC MEAN TO COMBINE L-J SIGMA PARAMETERS
Reading parm file (../../../data/2009-09-30/ramd_run_input/dhaawt_DCL.top) ...
PARM file in AMBER 7 format
Warning: Encounter 10-12 H-bond term
Warning: Found 10988 H-H bonds.
Info: SUMMARY OF PARAMETERS:
Info: 48 BONDS
Info: 100 ANGLES
Info: 100 HARMONIC
Info: 0 COSINE-BASED
Info: 49 DIHEDRAL
Info: 0 IMPROPER
Info: 0 CROSSTERM
Info: 0 VDW
Info: 171 VDW_PAIRS
Info: TIME FOR READING PDB FILE: 2.14577e-06
Info:
Info: ****************************
Info: STRUCTURE SUMMARY:
Info: 37589 ATOMS
Info: 37652 BONDS
Info: 8512 ANGLES
Info: 16045 DIHEDRALS
Info: 0 IMPROPERS
Info: 0 CROSSTERMS
Info: 58408 EXCLUSIONS
Info: 35236 RIGID BONDS
Info: 77528 DEGREES OF FREEDOM
Info: 13341 HYDROGEN GROUPS
Info: TOTAL MASS = 231361 amu
Info: TOTAL CHARGE = -8.5776e-06 e
Info: MASS DENSITY = 1.02641 g/cm^3
Info: ATOM DENSITY = 0.100423 atoms/A^3
Info: *****************************
Info:
Info: Entering startup at 24.0419 s, 85.3672 MB of memory in use
Info: Startup phase 0 took 0.000208139 s, 85.3672 MB of memory in use
Info: Startup phase 1 took 0.025506 s, 86.3086 MB of memory in use
Info: Startup phase 2 took 0.000418901 s, 86.3086 MB of memory in use
Info: PATCH GRID IS 3 (PERIODIC) BY 3 (PERIODIC) BY 4 (PERIODIC)
Info: PATCH GRID IS 1-AWAY BY 1-AWAY BY 1-AWAY
Info: REMOVING COM VELOCITY 0.0285315 -0.00828485 -0.0143431
Info: LARGEST PATCH (22) HAS 1135 ATOMS
Info: CREATING 2844 COMPUTE OBJECTS
Info: Startup phase 3 took 0.022649 s, 91.9102 MB of memory in use
Info: PME using 1 and 1 processors for FFT and reciprocal sum.
Info: PME GRID LOCATIONS: 0
Info: PME TRANS LOCATIONS: 0
Info: Optimizing 4 FFT steps. 1... 2... 3... 4... Done.
Info: Startup phase 4 took 0.0194521 s, 93.7148 MB of memory in use
Info: Startup phase 5 took 0.000114918 s, 93.7148 MB of memory in use
LDB: Measuring processor speeds ... Done.
Info: Startup phase 6 took 0.000283003 s, 93.7148 MB of memory in use
Info: CREATING 2844 COMPUTE OBJECTS
Info: useSync: 1 useProxySync: 0
Info: NONBONDED TABLE R-SQUARED SPACING: 0.0625
Info: NONBONDED TABLE SIZE: 769 POINTS
Info: ABSOLUTE IMPRECISION IN VDWA TABLE ENERGY: 1.26218e-29 AT 11.9974
Info: ABSOLUTE IMPRECISION IN VDWA TABLE FORCE: 1.34106e-29 AT 11.9974
Info: ABSOLUTE IMPRECISION IN VDWB TABLE ENERGY: 5.29396e-23 AT 11.9974
Info: ABSOLUTE IMPRECISION IN VDWB TABLE FORCE: 9.34714e-23 AT 11.9974
TCL: RAMD:
TCL: RAMD: -------------------------------------------------------------------
TCL: RAMD: Random Acceleration Molecular Dynamics Simulation version 4.0
TCL: RAMD: -------------------------------------------------------------------
TCL: RAMD:
TCL: RAMD: mdSteps = 100
TCL: RAMD: accel = 0.3
TCL: RAMD: ramdSeed = 14253
TCL: RAMD: forceOutFreq = 50
TCL: RAMD: maxDist = 30
TCL: RAMD: firstProtAtom = 1
TCL: RAMD: rMinRamd = 0.5
TCL: RAMD: debugLevel = 0
TCL: RAMD: mdStart = no
TCL: RAMD: ramdSteps = 50
TCL: RAMD: firstRamdAtom = 4597
TCL: RAMD: lastRamdAtom = 4608
TCL: RAMD: lastProtAtom = 4596
TCL: RAMD: rMinMd = 2.0
TCL: RAMD:
TCL: RAMD: Combined RAMD-MD simulation is performed
TCL: RAMD:
TCL: RAMD: Atoms subject to the random acceleration are: 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608
Info: Startup phase 7 took 0.0217791 s, 95.582 MB of memory in use
Info: Startup phase 8 took 0.000451803 s, 100.25 MB of memory in use
Info: Finished startup at 24.1328 s, 100.25 MB of memory in use
TCL: RAMD: 0 ***** INITIALIZE COMBINED RAMD-MD SIMULATION *****
TCL: RAMD: 0 >>> minimum travelled distance (A): 0.5
TCL: RAMD: 0 >>> minimum velocity (A/fs): 0.01
TCL: RAMD: 0 >>> LIGAND COM IS: 33.1101560609 36.4107951454 29.2705863152
TCL: RAMD: 0 >>> PROTEIN COM IS: 29.8053712126 38.4804280761 37.9902192834
TCL: RAMD: 0 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: DIST = 9.55180519389
TCL: RAMD: 0 >>> INITIAL RANDOM DIRECTION: 0.321712475829 -0.841865027272 -0.433317849565 :: ||r|| = 1.0
TCL: RAMD: 0 ***** START WITH 50 STEPS OF RAMD SIMULATION *****
ETITLE: TS BOND ANGLE DIHED IMPRP ELECT VDW BOUNDARY MISC KINETIC TOTAL TEMP POTENTIAL TOTAL3 TEMPAVG PRESSURE GPRESSURE VOLUME PRESSAVG GPRESSAVG
ENERGY: 0 889.8519 2420.1052 2193.0289 0.0000 -135355.1405 14528.0778 0.0000 0.0000 22943.5008 -92380.5758 297.8458 -115324.0766 -92295.8152 297.8458 246.8625 243.8576 374306.6767 246.8625 243.8576
LDB: ============= START OF LOAD BALANCING ============== 73.3446
LDB: ============== END OF LOAD BALANCING =============== 73.3447
TCL: RAMD FORCE: 50 > LIGAND COM is: 33.3116671695 35.9486690773 28.8355879859
TCL: RAMD FORCE: 50 > PROTEIN COM IS 29.7772048278 38.493783686 37.9946285342
TCL: RAMD FORCE: 50 > EXTERNAL FORCE VECTOR (F): 12.4481497351 -32.5746208294 -16.7665411805; ||F|| = 38.6934006927
TCL: RAMD FORCE: 50 > EXTERNAL FORCE DIRECTION (r): 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
TCL: RAMD FORCE: 50 > TOTAL FORCE ON THE LIGAND COM IS: 17.3328972578 -1.23565991656 -3.47442322167 (207.16100409)
TCL: RAMD: 50 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 50 *****
TCL: RAMD: 50 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 10.1418960842; IT CHANGED BY 0.59009089031
TCL: RAMD: 50 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.686959677511 (> 0.5)
TCL: RAMD: 50 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
Info: Initial time: 1 CPUs 0.979592 s/step 5.66894 days/ns 223.398 MB memory
LDB: ============= START OF LOAD BALANCING ============== 121.499
LDB: ============== END OF LOAD BALANCING =============== 121.499
TCL: MD FORCE: 100 > LIGAND COM is: 33.828636406 35.7382817431 28.5807880642
TCL: MD FORCE: 100 > PROTEIN COM IS 29.764956238 38.4990543824 37.9993053222
TCL: MD FORCE: 100 > TOTAL FORCE ON THE LIGAND COM IS: -2.45249156672 6.27013804357 -0.12390234438 (156.60840111)
Info: Initial time: 1 CPUs 0.964596 s/step 5.58216 days/ns 225.703 MB memory
ENERGY: 100 868.5343 2467.5938 2163.4967 0.0000 -135043.1279 14224.3725 0.0000 0.0000 23096.9083 -92222.2223 299.8373 -115319.1306 -92132.9995 297.9742 -68.4457 -70.7533 377360.3067 86.8198 86.8174
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 100
OPENING COORDINATE DCD FILE
WRITING COORDINATES TO DCD FILE AT STEP 100
WRITING COORDINATES TO RESTART FILE AT STEP 100
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 100
FINISHED WRITING RESTART VELOCITIES
LDB: ============= START OF LOAD BALANCING ============== 169.411
LDB: ============== END OF LOAD BALANCING =============== 169.411
TCL: MD FORCE: 150 > LIGAND COM is: 34.2673157274 35.8108180115 28.593317081
TCL: MD FORCE: 150 > PROTEIN COM IS 29.7539078346 38.503745434 37.9949381159
TCL: MD FORCE: 150 > TOTAL FORCE ON THE LIGAND COM IS: -7.34702312411 8.41178702631 2.50491927176 (195.316514912)
TCL: MD: 150 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 150 *****
TCL: MD: 150 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 10.7709417877; IT CHANGED BY: 0.6290457035
TCL: MD: 150 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.0193273824 (< 2.0)
TCL: MD: 150 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 150 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 150 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
Info: Initial time: 1 CPUs 0.955634 s/step 5.53029 days/ns 233.879 MB memory
LDB: ============= START OF LOAD BALANCING ============== 216.564
LDB: ============== END OF LOAD BALANCING =============== 216.564
TCL: RAMD FORCE: 200 > LIGAND COM is: 34.72615686 35.5693203823 28.4413188089
TCL: RAMD FORCE: 200 > PROTEIN COM IS 29.7502387585 38.5006613536 37.987156021
TCL: RAMD FORCE: 200 > EXTERNAL FORCE VECTOR (F): 12.4481497351 -32.5746208294 -16.7665411805; ||F|| = 38.6934006927
TCL: RAMD FORCE: 200 > EXTERNAL FORCE DIRECTION (r): 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
TCL: RAMD FORCE: 200 > TOTAL FORCE ON THE LIGAND COM IS: 14.5900248516 -24.6276310447 -12.4769650257 (251.097083895)
TCL: RAMD: 200 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 200 *****
TCL: RAMD: 200 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 11.1568601731; IT CHANGED BY 0.3859183854
TCL: RAMD: 200 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.539958349336 (> 0.5)
TCL: RAMD: 200 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
Info: Benchmark time: 1 CPUs 0.944825 s/step 5.46774 days/ns 233.879 MB memory
ENERGY: 200 870.0302 2469.9948 2233.8348 0.0000 -135138.0980 14351.5368 0.0000 0.0000 23061.9168 -92150.7847 299.3830 -115212.7015 -92063.6800 297.8622 210.9425 211.4307 376490.0508 -21.5025 -21.4051
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 200
WRITING COORDINATES TO DCD FILE AT STEP 200
WRITING COORDINATES TO RESTART FILE AT STEP 200
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 200
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 250 > LIGAND COM is: 35.3869024629 35.1770106611 28.2940374082
TCL: MD FORCE: 250 > PROTEIN COM IS 29.7406718561 38.4991453278 37.9920610461
TCL: MD FORCE: 250 > TOTAL FORCE ON THE LIGAND COM IS: -7.24529741491 6.1255125578 10.7207543199 (248.028122956)
Info: Benchmark time: 1 CPUs 0.942329 s/step 5.45329 days/ns 233.879 MB memory
TCL: MD FORCE: 300 > LIGAND COM is: 35.8752434834 35.0474074925 28.5102219151
TCL: MD FORCE: 300 > PROTEIN COM IS 29.7349200913 38.4983001115 37.9899882181
TCL: MD FORCE: 300 > TOTAL FORCE ON THE LIGAND COM IS: -6.94489956459 1.38734174176 -0.6288725209 (166.182974047)
TCL: MD: 300 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 300 *****
TCL: MD: 300 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 11.8100889237; IT CHANGED BY: 0.6532287506
TCL: MD: 300 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.27676895341 (< 2.0)
TCL: MD: 300 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 300 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 300 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
Info: Benchmark time: 1 CPUs 0.927833 s/step 5.3694 days/ns 233.879 MB memory
ENERGY: 300 861.6393 2515.1243 2210.3828 0.0000 -135042.8787 14536.1890 0.0000 0.0000 22855.4511 -92064.0922 296.7028 -114919.5433 -91981.8217 297.7257 259.0486 256.0734 377010.4735 16.6437 16.6022
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 300
WRITING COORDINATES TO DCD FILE AT STEP 300
WRITING COORDINATES TO RESTART FILE AT STEP 300
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 300
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 350 > LIGAND COM is: 36.2636350525 34.6591619118 28.4333025277
TCL: RAMD FORCE: 350 > PROTEIN COM IS 29.735195951 38.4938797036 37.9943482911
TCL: RAMD FORCE: 350 > EXTERNAL FORCE VECTOR (F): 12.4481497351 -32.5746208294 -16.7665411805; ||F|| = 38.6934006927
TCL: RAMD FORCE: 350 > EXTERNAL FORCE DIRECTION (r): 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
TCL: RAMD FORCE: 350 > TOTAL FORCE ON THE LIGAND COM IS: -2.8173318365 -13.2453744093 -22.6968676181 (165.401013862)
TCL: RAMD: 350 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 350 *****
TCL: RAMD: 350 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 12.195867076; IT CHANGED BY 0.3857781523
TCL: RAMD: 350 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.551871287431 (> 0.5)
TCL: RAMD: 350 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 400 > LIGAND COM is: 36.3595036453 34.4189420821 27.9938463776
TCL: MD FORCE: 400 > PROTEIN COM IS 29.7468819127 38.4864683523 37.9980813665
TCL: MD FORCE: 400 > TOTAL FORCE ON THE LIGAND COM IS: -0.77469337609 17.9155960911 13.2659254201 (236.901924222)
ENERGY: 400 910.3259 2535.9651 2236.7562 0.0000 -134664.7962 14025.0430 0.0000 0.0000 22961.7981 -91994.9078 298.0833 -114956.7060 -91912.0212 298.1395 -66.3337 -66.2438 376274.3233 -23.5704 -23.5409
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 400
WRITING COORDINATES TO DCD FILE AT STEP 400
WRITING COORDINATES TO RESTART FILE AT STEP 400
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 400
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 450 > LIGAND COM is: 36.4009732106 34.5895716632 27.8550017861
TCL: MD FORCE: 450 > PROTEIN COM IS 29.7433226104 38.4771394351 37.9974197995
TCL: MD FORCE: 450 > TOTAL FORCE ON THE LIGAND COM IS: 4.74843086263 2.53745228407 20.9660912291 (213.997698256)
TCL: MD: 450 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 450 *****
TCL: MD: 450 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 12.7399426157; IT CHANGED BY: 0.5440755397
TCL: MD: 450 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.597898339778 (< 2.0)
TCL: MD: 450 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 450 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 450 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
Info: Pairlistdist is too small for 20 computes during timestep 484.
TCL: RAMD FORCE: 500 > LIGAND COM is: 36.5205221516 34.3450156414 27.8393701046
TCL: RAMD FORCE: 500 > PROTEIN COM IS 29.7390278552 38.4672329704 37.9929680532
TCL: RAMD FORCE: 500 > EXTERNAL FORCE VECTOR (F): 12.4481497351 -32.5746208294 -16.7665411805; ||F|| = 38.6934006927
TCL: RAMD FORCE: 500 > EXTERNAL FORCE DIRECTION (r): 0.321712475829 -0.841865027272 -0.433317849565; ||r|| = 1.0
TCL: RAMD FORCE: 500 > TOTAL FORCE ON THE LIGAND COM IS: 12.1568208452 -21.7826694477 -9.8669110951 (212.635760581)
TCL: RAMD: 500 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 500 *****
TCL: RAMD: 500 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 12.8870823658; IT CHANGED BY 0.1471397501
TCL: RAMD: 500 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.265561041355 (< 0.5)
TCL: RAMD: 500 >>> CONTINUE WITH 50 STEPS OF RAMD SIMULATION
TCL: RAMD: 500 >>> CHANGE ACCELERATION DIRECTION TO: 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
ENERGY: 500 936.5610 2475.4231 2229.2300 0.0000 -134806.5394 14163.7186 0.0000 0.0000 23070.6585 -91930.9482 299.4965 -115001.6067 -91848.0405 298.2014 -35.9761 -40.3072 375974.8195 -7.3995 -7.3936
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 500
WRITING COORDINATES TO DCD FILE AT STEP 500
WRITING COORDINATES TO RESTART FILE AT STEP 500
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 500
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 550 > LIGAND COM is: 37.0257393274 34.3368458262 27.654371134
TCL: RAMD FORCE: 550 > PROTEIN COM IS 29.7423214367 38.4551286724 37.9911851356
TCL: RAMD FORCE: 550 > EXTERNAL FORCE VECTOR (F): 24.4823036545 29.7193879901 -3.81497607182; ||F|| = 38.6934006927
TCL: RAMD FORCE: 550 > EXTERNAL FORCE DIRECTION (r): 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
TCL: RAMD FORCE: 550 > TOTAL FORCE ON THE LIGAND COM IS: 17.3965416491 28.185741907 6.8595006036 (231.317538105)
TCL: RAMD: 550 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 550 *****
TCL: RAMD: 550 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 13.2988027083; IT CHANGED BY 0.4117203425
TCL: RAMD: 550 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.534332196924 (> 0.5)
TCL: RAMD: 550 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 600 > LIGAND COM is: 37.6624984469 34.7025699984 27.4996690194
TCL: MD FORCE: 600 > PROTEIN COM IS 29.7321975207 38.4421779093 37.9884676419
TCL: MD FORCE: 600 > TOTAL FORCE ON THE LIGAND COM IS: -15.1966091001 -7.31944310579 2.46760453449 (175.30340894)
ENERGY: 600 939.7875 2468.4287 2182.1926 0.0000 -134680.2885 14187.4269 0.0000 0.0000 23017.0584 -91885.3944 298.8007 -114902.4527 -91801.0843 299.8333 -378.9891 -378.9832 376750.2857 20.2084 20.2310
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 600
WRITING COORDINATES TO DCD FILE AT STEP 600
WRITING COORDINATES TO RESTART FILE AT STEP 600
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 600
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 650 > LIGAND COM is: 37.8536353792 34.7598874014 27.2623662583
TCL: MD FORCE: 650 > PROTEIN COM IS 29.7317686079 38.4331316253 37.9899437533
TCL: MD FORCE: 650 > TOTAL FORCE ON THE LIGAND COM IS: -3.40059490995 -16.2184258937 -0.09221577569 (230.794277332)
TCL: MD: 650 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 650 *****
TCL: MD: 650 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 13.9477009536; IT CHANGED BY: 0.6488982453
TCL: MD: 650 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.0265242367 (< 2.0)
TCL: MD: 650 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 650 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 650 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
TCL: RAMD FORCE: 700 > LIGAND COM is: 38.2984891737 34.9585018823 26.9441152615
TCL: RAMD FORCE: 700 > PROTEIN COM IS 29.7512265633 38.4282020849 37.9855212757
TCL: RAMD FORCE: 700 > EXTERNAL FORCE VECTOR (F): 24.4823036545 29.7193879901 -3.81497607182; ||F|| = 38.6934006927
TCL: RAMD FORCE: 700 > EXTERNAL FORCE DIRECTION (r): 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
TCL: RAMD FORCE: 700 > TOTAL FORCE ON THE LIGAND COM IS: 14.1055658301 12.0551052646 -1.70978980937 (190.488996159)
TCL: RAMD: 700 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 700 *****
TCL: RAMD: 700 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 14.3877435478; IT CHANGED BY 0.4400425942
TCL: RAMD: 700 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.566462821428 (> 0.5)
TCL: RAMD: 700 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
ENERGY: 700 887.3397 2513.2426 2257.5451 0.0000 -134709.4225 14236.1924 0.0000 0.0000 22963.0330 -91852.0698 298.0994 -114815.1028 -91771.0513 299.3601 161.1515 160.2624 376521.6143 -0.1849 -0.1845
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 700
WRITING COORDINATES TO DCD FILE AT STEP 700
WRITING COORDINATES TO RESTART FILE AT STEP 700
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 700
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 750 > LIGAND COM is: 38.7798652062 35.2065255875 26.5179334141
TCL: MD FORCE: 750 > PROTEIN COM IS 29.7558940699 38.4365591464 37.9842785162
TCL: MD FORCE: 750 > TOTAL FORCE ON THE LIGAND COM IS: -11.9296243213 -7.14053013035 -8.00714399215 (252.270960786)
TCL: MD FORCE: 800 > LIGAND COM is: 38.8843146226 35.228423373 26.007406177
TCL: MD FORCE: 800 > PROTEIN COM IS 29.758791031 38.4380658892 37.9923703064
TCL: MD FORCE: 800 > TOTAL FORCE ON THE LIGAND COM IS: -3.07384633802 -3.682373567 18.1591210482 (190.82578224)
TCL: MD: 800 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 800 *****
TCL: MD: 800 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 15.401829472; IT CHANGED BY: 1.0140859242
TCL: MD: 800 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.1368015127 (< 2.0)
TCL: MD: 800 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 800 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 800 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
ENERGY: 800 931.7333 2455.0946 2217.0543 0.0000 -134852.5047 14326.9951 0.0000 0.0000 23076.3354 -91845.2920 299.5702 -114921.6274 -91759.6119 299.9432 0.6091 -2.9403 376957.0658 12.1000 12.0508
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 800
WRITING COORDINATES TO DCD FILE AT STEP 800
WRITING COORDINATES TO RESTART FILE AT STEP 800
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 800
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 850 > LIGAND COM is: 39.2250287693 35.6128275235 25.8258032288
TCL: RAMD FORCE: 850 > PROTEIN COM IS 29.7595722695 38.4418207509 38.0011255326
TCL: RAMD FORCE: 850 > EXTERNAL FORCE VECTOR (F): 24.4823036545 29.7193879901 -3.81497607182; ||F|| = 38.6934006927
TCL: RAMD FORCE: 850 > EXTERNAL FORCE DIRECTION (r): 0.632725560851 0.768073817707 -0.0985950059577; ||r|| = 1.0
TCL: RAMD FORCE: 850 > TOTAL FORCE ON THE LIGAND COM IS: -0.1518949326 27.2877281765 -4.92470289361 (289.114840839)
TCL: RAMD: 850 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 850 *****
TCL: RAMD: 850 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 15.6791754449; IT CHANGED BY 0.2773459729
TCL: RAMD: 850 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.544687522961 (> 0.5)
TCL: RAMD: 850 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 900 > LIGAND COM is: 39.3954002944 36.2653569518 25.78932375
TCL: MD FORCE: 900 > PROTEIN COM IS 29.7868072723 38.4398469675 38.0015995724
TCL: MD FORCE: 900 > TOTAL FORCE ON THE LIGAND COM IS: -14.7863933865 -14.5010417376 -0.50474128512 (292.607697009)
ENERGY: 900 887.0729 2528.7343 2210.0948 0.0000 -134637.4779 14169.1188 0.0000 0.0000 23040.8086 -91801.6484 299.1090 -114842.4570 -91716.0598 299.0520 307.0745 308.0237 376681.0679 -3.9019 -3.8680
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 900
WRITING COORDINATES TO DCD FILE AT STEP 900
WRITING COORDINATES TO RESTART FILE AT STEP 900
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 900
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 950 > LIGAND COM is: 39.1734181589 36.4623384999 25.9171925894
TCL: MD FORCE: 950 > PROTEIN COM IS 29.8011938014 38.4372221078 38.0031693477
TCL: MD FORCE: 950 > TOTAL FORCE ON THE LIGAND COM IS: -1.16033146245 -5.53883197742 6.57023375425 (155.909948607)
TCL: MD: 950 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 950 *****
TCL: MD: 950 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 15.4210761256; IT CHANGED BY: -0.2580993193
TCL: MD: 950 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.8638160111 (< 2.0)
TCL: MD: 950 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM DECREASED
TCL: MD: 950 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 950 >>> CHANGE ACCELERATION DIRECTION TO: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1000 > LIGAND COM is: 39.1965732599 35.9104446978 26.0907091831
TCL: RAMD FORCE: 1000 > PROTEIN COM IS 29.8183255705 38.4289921816 38.0098788817
TCL: RAMD FORCE: 1000 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1000 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1000 > TOTAL FORCE ON THE LIGAND COM IS: 3.36563873997 -41.089813916 -13.4960206542 (236.894867558)
TCL: RAMD: 1000 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1000 *****
TCL: RAMD: 1000 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 15.3740436274; IT CHANGED BY -0.0470324982
TCL: RAMD: 1000 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.568710194796 (> 0.5)
TCL: RAMD: 1000 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TIMING: 1000 CPU: 926.291, 0.924537/step Wall: 926.291, 0.924537/step, 128.151 hours remaining, 233.878906 MB of memory in use.
Info: 360 pairlist warnings in past 1000 steps.
ETITLE: TS BOND ANGLE DIHED IMPRP ELECT VDW BOUNDARY MISC KINETIC TOTAL TEMP POTENTIAL TOTAL3 TEMPAVG PRESSURE GPRESSURE VOLUME PRESSAVG GPRESSAVG
ENERGY: 1000 906.7144 2466.8891 2174.7625 0.0000 -134736.5184 14232.4524 0.0000 0.0000 23152.3650 -91803.3349 300.5572 -114955.6999 -91717.1026 300.6092 78.5070 77.1577 376372.5640 -10.1462 -10.1575
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1000
WRITING COORDINATES TO DCD FILE AT STEP 1000
WRITING COORDINATES TO RESTART FILE AT STEP 1000
FINISHED WRITING RESTART COORDINATES
OPENING VELOCITY DCD FILE
WRITING VELOCITIES TO DCD FILE AT STEP 1000
WRITING VELOCITIES TO RESTART FILE AT STEP 1000
FINISHED WRITING RESTART VELOCITIES
Info: Pairlistdist is too small for 26 computes during timestep 1004.
TCL: MD FORCE: 1050 > LIGAND COM is: 39.2912098106 34.7063614805 26.1243828057
TCL: MD FORCE: 1050 > PROTEIN COM IS 29.8313334989 38.4168921019 38.0086578686
TCL: MD FORCE: 1050 > TOTAL FORCE ON THE LIGAND COM IS: -17.5848455202 21.5188691603 -6.5521580317 (350.408912299)
TCL: MD FORCE: 1100 > LIGAND COM is: 39.1489226883 33.7970693583 26.0898342162
TCL: MD FORCE: 1100 > PROTEIN COM IS 29.8502404544 38.3976444383 37.9978172757
TCL: MD FORCE: 1100 > TOTAL FORCE ON THE LIGAND COM IS: 11.1514106292 24.5551562903 -20.7440786143 (255.196991124)
TCL: MD: 1100 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1100 *****
TCL: MD: 1100 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 15.7933797173; IT CHANGED BY: 0.4193360899
TCL: MD: 1100 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 2.08357738366 (> 2.0)
TCL: MD: 1100 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1100 >>> CONTINUE WITH 100 STEPS OF STANDARD MD SIMULATION
ENERGY: 1100 941.0616 2497.5878 2142.8409 0.0000 -134597.6561 14180.3726 0.0000 0.0000 23027.5186 -91808.2746 298.9365 -114835.7933 -91724.7090 300.0925 -280.9840 -283.8732 375944.7090 -15.0003 -15.0180
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1100
WRITING COORDINATES TO DCD FILE AT STEP 1100
WRITING COORDINATES TO RESTART FILE AT STEP 1100
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1100
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1150 > LIGAND COM is: 39.0086317285 33.2564960096 25.7413747929
TCL: MD FORCE: 1150 > PROTEIN COM IS 29.8637072705 38.3859972945 37.9950371109
TCL: MD FORCE: 1150 > TOTAL FORCE ON THE LIGAND COM IS: 7.50063980286 9.71801339554 3.95008995521 (193.768801302)
TCL: MD FORCE: 1200 > LIGAND COM is: 39.110093919 33.051856999 25.459123105
TCL: MD FORCE: 1200 > PROTEIN COM IS 29.8834238056 38.383776357 37.9848994385
TCL: MD FORCE: 1200 > TOTAL FORCE ON THE LIGAND COM IS: 7.26080517976 10.0825746768 -2.48623828096 (302.808900753)
TCL: MD: 1200 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1200 *****
TCL: MD: 1200 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 16.4455428058; IT CHANGED BY: 0.6521630885
TCL: MD: 1200 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.960061835518 (< 2.0)
TCL: MD: 1200 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1200 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 1200 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
ENERGY: 1200 947.3497 2511.9849 2222.9163 0.0000 -134273.9865 13803.0098 0.0000 0.0000 22999.2731 -91789.4527 298.5698 -114788.7259 -91707.3802 299.5566 -483.3650 -484.6648 375745.5395 -6.7422 -6.6977
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1200
WRITING COORDINATES TO DCD FILE AT STEP 1200
WRITING COORDINATES TO RESTART FILE AT STEP 1200
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1200
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 1250 > LIGAND COM is: 39.735554944 32.5979435677 25.1007295908
TCL: RAMD FORCE: 1250 > PROTEIN COM IS 29.8895584371 38.3699688709 37.9780309249
TCL: RAMD FORCE: 1250 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1250 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1250 > TOTAL FORCE ON THE LIGAND COM IS: 11.0034037476 -22.7355182276 9.13189282404 (226.714022177)
TCL: RAMD: 1250 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1250 *****
TCL: RAMD: 1250 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 17.2071151843; IT CHANGED BY 0.7615723785
TCL: RAMD: 1250 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.837154854711 (> 0.5)
TCL: RAMD: 1250 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 1300 > LIGAND COM is: 40.4077250099 31.9173105611 24.9983209726
TCL: MD FORCE: 1300 > PROTEIN COM IS 29.9015858376 38.3681135467 37.9753086042
TCL: MD FORCE: 1300 > TOTAL FORCE ON THE LIGAND COM IS: -13.4085876936 13.9220491559 5.6731322818 (330.103415125)
ENERGY: 1300 919.7193 2511.2488 2148.5577 0.0000 -134494.8574 13922.3413 0.0000 0.0000 23238.8405 -91754.1499 301.6798 -114992.9904 -91666.4021 300.2659 -218.4419 -219.7474 376378.8902 22.1329 22.1869
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1300
WRITING COORDINATES TO DCD FILE AT STEP 1300
WRITING COORDINATES TO RESTART FILE AT STEP 1300
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1300
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1350 > LIGAND COM is: 40.5862930334 31.5193923286 24.950877873
TCL: MD FORCE: 1350 > PROTEIN COM IS 29.9095337452 38.3634080408 37.9786997013
TCL: MD FORCE: 1350 > TOTAL FORCE ON THE LIGAND COM IS: -3.267852569 0.62894328979 -7.16057104755 (257.886752067)
TCL: MD: 1350 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1350 *****
TCL: MD: 1350 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 18.1812508249; IT CHANGED BY: 0.9741356406
TCL: MD: 1350 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.36454631834 (< 2.0)
TCL: MD: 1350 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1350 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 1350 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1400 > LIGAND COM is: 40.8678030016 30.7253773211 24.625061617
TCL: RAMD FORCE: 1400 > PROTEIN COM IS 29.9284374095 38.3481525968 37.9807311335
TCL: RAMD FORCE: 1400 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1400 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1400 > TOTAL FORCE ON THE LIGAND COM IS: 6.99291882387 -13.2541928552 -10.7624845204 (279.397030827)
TCL: RAMD: 1400 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1400 *****
TCL: RAMD: 1400 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 18.871945599; IT CHANGED BY 0.6906947741
TCL: RAMD: 1400 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.884823505104 (> 0.5)
TCL: RAMD: 1400 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
ENERGY: 1400 903.0060 2526.9222 2200.1279 0.0000 -134553.2631 14211.1246 0.0000 0.0000 23006.4441 -91705.6382 298.6629 -114712.0823 -91621.1506 300.4497 372.5801 372.4513 376663.8214 15.3516 15.2763
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1400
WRITING COORDINATES TO DCD FILE AT STEP 1400
WRITING COORDINATES TO RESTART FILE AT STEP 1400
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1400
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1450 > LIGAND COM is: 41.2468837133 29.910231462 24.0747511802
TCL: MD FORCE: 1450 > PROTEIN COM IS 29.9483227054 38.3327948787 37.9828768067
TCL: MD FORCE: 1450 > TOTAL FORCE ON THE LIGAND COM IS: -3.48977398702 2.0267791352 11.683021117 (235.119544609)
TCL: MD FORCE: 1500 > LIGAND COM is: 41.519527767 29.1750849376 23.8414328932
TCL: MD FORCE: 1500 > PROTEIN COM IS 29.9668878437 38.3147635325 37.986552306
TCL: MD FORCE: 1500 > TOTAL FORCE ON THE LIGAND COM IS: 7.82143961359 13.1212557436 -1.37322012413 (186.379171743)
TCL: MD: 1500 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1500 *****
TCL: MD: 1500 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 20.4225761651; IT CHANGED BY: 1.5506305661
TCL: MD: 1500 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.81668165182 (< 2.0)
TCL: MD: 1500 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1500 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 1500 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
ENERGY: 1500 910.2164 2447.4605 2160.4138 0.0000 -134650.9333 14294.5412 0.0000 0.0000 23136.0451 -91702.2563 300.3454 -114838.3013 -91617.3248 300.7289 181.0299 179.2831 377142.4087 13.0568 13.0451
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1500
WRITING COORDINATES TO DCD FILE AT STEP 1500
WRITING COORDINATES TO RESTART FILE AT STEP 1500
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1500
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 1550 > LIGAND COM is: 42.160456835 28.3122261787 23.6044630638
TCL: RAMD FORCE: 1550 > PROTEIN COM IS 29.9902857104 38.2969820825 37.9896603201
TCL: RAMD FORCE: 1550 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1550 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1550 > TOTAL FORCE ON THE LIGAND COM IS: 4.4817069495 -8.1924121369 -4.12910439136 (259.763698443)
TCL: RAMD: 1550 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1550 *****
TCL: RAMD: 1550 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 21.3246879406; IT CHANGED BY 0.9021117755
TCL: RAMD: 1550 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.07384254599 (> 0.5)
TCL: RAMD: 1550 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 1600 > LIGAND COM is: 42.9490030416 27.3759716871 23.2744760731
TCL: MD FORCE: 1600 > PROTEIN COM IS 29.9780272863 38.2876983704 37.9965286499
TCL: MD FORCE: 1600 > TOTAL FORCE ON THE LIGAND COM IS: 6.48492953985 5.32305239765 -2.61296059816 (256.311288888)
ENERGY: 1600 898.9870 2462.1962 2158.7165 0.0000 -134618.2601 14411.7449 0.0000 0.0000 23066.2422 -91620.3735 299.4392 -114686.6157 -91533.5333 299.5219 61.0252 63.6397 378188.1657 30.1437 30.2191
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1600
WRITING COORDINATES TO DCD FILE AT STEP 1600
WRITING COORDINATES TO RESTART FILE AT STEP 1600
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1600
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1650 > LIGAND COM is: 43.6717542502 26.5864672275 22.880602869
TCL: MD FORCE: 1650 > PROTEIN COM IS 29.9751648686 38.2840729824 38.0011251289
TCL: MD FORCE: 1650 > TOTAL FORCE ON THE LIGAND COM IS: -7.2570657382 -0.18835852869 -6.05933544432 (243.632589508)
TCL: MD: 1650 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1650 *****
TCL: MD: 1650 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 23.5172433439; IT CHANGED BY: 2.1925554033
TCL: MD: 1650 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 2.40925510661 (> 2.0)
TCL: MD: 1650 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1650 >>> CONTINUE WITH 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 1700 > LIGAND COM is: 44.09984307 25.861073299 22.4135660143
TCL: MD FORCE: 1700 > PROTEIN COM IS 29.9860145558 38.2786553567 38.0062909304
TCL: MD FORCE: 1700 > TOTAL FORCE ON THE LIGAND COM IS: -3.0111449909 17.4867229364 0.48737868107 (260.067446692)
ENERGY: 1700 960.1024 2488.9686 2148.9132 0.0000 -134836.9917 14273.9676 0.0000 0.0000 23359.3927 -91605.6472 303.2448 -114965.0399 -91518.9462 300.2298 -721.5405 -720.8376 378316.1811 -3.0411 -3.0573
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1700
WRITING COORDINATES TO DCD FILE AT STEP 1700
WRITING COORDINATES TO RESTART FILE AT STEP 1700
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1700
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1750 > LIGAND COM is: 44.4162591183 25.5793810802 22.0644265487
TCL: MD FORCE: 1750 > PROTEIN COM IS 29.9944385646 38.278790373 38.0105570608
TCL: MD FORCE: 1750 > TOTAL FORCE ON THE LIGAND COM IS: -24.7304829315 -7.18471388167 1.27593440866 (283.30692526)
TCL: MD: 1750 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1750 *****
TCL: MD: 1750 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 24.9708426525; IT CHANGED BY: 1.4535993086
TCL: MD: 1750 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.4870102782 (< 2.0)
TCL: MD: 1750 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1750 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 1750 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1800 > LIGAND COM is: 44.724402456 24.874630868 21.7675903517
TCL: RAMD FORCE: 1800 > PROTEIN COM IS 29.9988221451 38.2789573695 38.0235156637
TCL: RAMD FORCE: 1800 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1800 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1800 > TOTAL FORCE ON THE LIGAND COM IS: 11.1778687764 -12.1819002925 5.68352936774 (262.755467197)
TCL: RAMD: 1800 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1800 *****
TCL: RAMD: 1800 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 25.7055206561; IT CHANGED BY 0.7346780036
TCL: RAMD: 1800 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 0.827738533204 (> 0.5)
TCL: RAMD: 1800 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
ENERGY: 1800 931.2757 2474.7119 2155.9940 0.0000 -134595.3369 14176.3606 0.0000 0.0000 23254.9346 -91602.0600 301.8887 -114856.9946 -91514.8661 301.4226 -190.4706 -191.5549 378884.6015 22.8039 22.7618
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1800
WRITING COORDINATES TO DCD FILE AT STEP 1800
WRITING COORDINATES TO RESTART FILE AT STEP 1800
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1800
FINISHED WRITING RESTART VELOCITIES
TCL: MD FORCE: 1850 > LIGAND COM is: 45.1111995727 24.0799294059 21.4555344369
TCL: MD FORCE: 1850 > PROTEIN COM IS 30.0016653344 38.2791206918 38.036896884
TCL: MD FORCE: 1850 > TOTAL FORCE ON THE LIGAND COM IS: -2.1083504779 11.4694085874 -2.91922735848 (204.233736584)
TCL: MD FORCE: 1900 > LIGAND COM is: 45.3967821185 23.6197522797 21.0101526559
TCL: MD FORCE: 1900 > PROTEIN COM IS 30.003926672 38.2808366658 38.0415770427
TCL: MD FORCE: 1900 > TOTAL FORCE ON THE LIGAND COM IS: -3.17382428957 3.29716118076 2.10312018717 (228.270730007)
TCL: MD: 1900 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 1900 *****
TCL: MD: 1900 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 27.2388841698; IT CHANGED BY: 1.5333635137
TCL: MD: 1900 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.62052315686 (< 2.0)
TCL: MD: 1900 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 1900 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 1900 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
ENERGY: 1900 968.6468 2568.9363 2169.0137 0.0000 -134650.8618 14149.3071 0.0000 0.0000 23195.2821 -91599.6759 301.1144 -114794.9579 -91515.7411 300.7123 24.4310 24.0373 379010.5651 6.8944 6.8796
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 1900
WRITING COORDINATES TO DCD FILE AT STEP 1900
WRITING COORDINATES TO RESTART FILE AT STEP 1900
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 1900
FINISHED WRITING RESTART VELOCITIES
TCL: RAMD FORCE: 1950 > LIGAND COM is: 45.8868356111 22.7776196903 20.6731892622
TCL: RAMD FORCE: 1950 > PROTEIN COM IS 30.0139270938 38.285585535 38.0417454932
TCL: RAMD FORCE: 1950 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 1950 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 1950 > TOTAL FORCE ON THE LIGAND COM IS: -24.5284080032 2.4247421867 -11.4944188225 (238.091489919)
TCL: RAMD: 1950 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 1950 *****
TCL: RAMD: 1950 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 28.1800102021; IT CHANGED BY 0.9411260323
TCL: RAMD: 1950 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.03020242489 (> 0.5)
TCL: RAMD: 1950 >>> SWITCH TO 100 STEPS OF STANDARD MD SIMULATION
TCL: MD FORCE: 2000 > LIGAND COM is: 46.1062129876 21.8979179936 20.3837981322
TCL: MD FORCE: 2000 > PROTEIN COM IS 30.0218713196 38.2911760467 38.0476221108
TCL: MD FORCE: 2000 > TOTAL FORCE ON THE LIGAND COM IS: 2.6672194111 -2.8668325184 11.0128643183 (218.0849178)
TIMING: 2000 CPU: 1836.4, 0.910105/step Wall: 1836.4, 0.910105/step, 125.898 hours remaining, 235.023438 MB of memory in use.
Info: 1209 pairlist warnings in past 1000 steps.
ETITLE: TS BOND ANGLE DIHED IMPRP ELECT VDW BOUNDARY MISC KINETIC TOTAL TEMP POTENTIAL TOTAL3 TEMPAVG PRESSURE GPRESSURE VOLUME PRESSAVG GPRESSAVG
ENERGY: 2000 879.7848 2564.3360 2207.8035 0.0000 -134885.1794 14445.6105 0.0000 0.0000 23157.3449 -91630.2997 300.6219 -114787.6446 -91544.7323 301.2148 566.8397 566.5388 377320.4433 -42.3596 -42.3651
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 2000
WRITING COORDINATES TO DCD FILE AT STEP 2000
WRITING COORDINATES TO RESTART FILE AT STEP 2000
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO DCD FILE AT STEP 2000
WRITING VELOCITIES TO RESTART FILE AT STEP 2000
FINISHED WRITING RESTART VELOCITIES
Info: Pairlistdist is too small for 48 computes during timestep 2009.
TCL: MD FORCE: 2050 > LIGAND COM is: 46.340960101 21.0719845695 20.3756404715
TCL: MD FORCE: 2050 > PROTEIN COM IS 30.0195656151 38.2795736077 38.048648378
TCL: MD FORCE: 2050 > TOTAL FORCE ON THE LIGAND COM IS: -0.31793929403 6.2682435557 -0.41194365619 (250.204548904)
TCL: MD: 2050 ***** EVALUATE 100 STANDARD MD STEPS AT TIMESTEP 2050 *****
TCL: MD: 2050 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 29.5774279973; IT CHANGED BY: 1.3974177952
TCL: MD: 2050 >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: 1.78397014729 (< 2.0)
TCL: MD: 2050 >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED
TCL: MD: 2050 >>> SWITCH TO 50 STEPS OF RAMD SIMULATION
TCL: MD: 2050 >>> KEEP PREVIOUS ACCELERATION DIRECTION: 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 2100 > LIGAND COM is: 46.771259863 19.962751342 20.3703896611
TCL: RAMD FORCE: 2100 > PROTEIN COM IS 30.0288971465 38.263118127 38.0521940659
TCL: RAMD FORCE: 2100 > EXTERNAL FORCE VECTOR (F): 17.5646759977 -34.3217507796 -3.26784909177; ||F|| = 38.6934006927
TCL: RAMD FORCE: 2100 > EXTERNAL FORCE DIRECTION (r): 0.453945005691 -0.887018203755 -0.0844549466644; ||r|| = 1.0
TCL: RAMD FORCE: 2100 > TOTAL FORCE ON THE LIGAND COM IS: 3.54343301456 -18.2555380751 0.66060426001 (209.456430088)
TCL: RAMD: 2100 ***** EVALUATE 50 RAMD STEPS AT TIMESTEP 2100 *****
TCL: RAMD: 2100 >>> DISTANCE LIGAND COM - PPROTEIN COM IS: 30.4607344102; IT CHANGED BY 0.8833064129
ENERGY: 2100 971.0980 2507.0379 2150.2751 0.0000 -134241.2858 14031.7369 0.0000 0.0000 23068.7739 -91512.3640 299.4721 -114581.1379 -91425.6177 299.9781 -413.3343 -414.1444 379099.4593 42.7788 42.7744
WRITING EXTENDED SYSTEM TO RESTART FILE AT STEP 2100
WRITING COORDINATES TO DCD FILE AT STEP 2100
WRITING COORDINATES TO RESTART FILE AT STEP 2100
FINISHED WRITING RESTART COORDINATES
WRITING VELOCITIES TO RESTART FILE AT STEP 2100
FINISHED WRITING RESTART VELOCITIES
TCL: EXIT: 2100 > MAX DISTANCE LIGAND COM - PROTEIN COM REACHED
TCL: EXIT: 2100 > LIGAND EXIT EVENT DETECTED: STOP SIMULATION
TCL: EXIT: 2100 > EXIT NAMD
Linux node-07-01 2.6.25.11-ib-amd64 #8 SMP Wed Jul 23 14:40:21 CEST 2008 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,175 @@
#! /bin/bash
#NAMD_HOME=/path/to/your/directory ## please change this to the path of your NAMD installation
NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1_tcl8.3/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1_tcl8.5/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2010-02-23/namd2_mvapich2-1.4rc1/Linux-x86_64-intel-mvapich2
echo "NAMD executable is : $NAMD_HOME/namd2"
echo "Linking information for the NAMD executable:"
ldd $NAMD_HOME/namd2
fname=dhaawt_DCL # the RAMD example; in order to run the RAMD-MD example, change this to "example_ramd-md"
outdir=ramd-md_output # the RAMD output directory; change to example_ramd-md_output
if [ -d "$outdir" ]; then rm -rf $outdir; mkdir $outdir; else mkdir $outdir; fi
cat << EOF > $fname.ramd-md.namdin
#*** Example of the NAMD configuration file for running plain RAMD simulation
#*** Uses the 'Cornell et al. 1995' force field (topology file in AMBER format)
#*** Calculation should take about 15 min with the NAMD v2.7b on a single CPU
#**** AMBER force field ********************************************************
amber on
parmfile $fname.top
ambercoor $fname.emd2.rst
readexclusions yes
exclude scaled1-4
1-4scaling 0.83333333 #=1/1.2
scnb 2
#*** Approximations for nonbonded interactions **********************************
cutoff 12
switching off
pairlistdist 15
outputpairlists 1000
stepspercycle 10
nonbondedfreq 1
fullelectfrequency 1
margin 1
#*** Timestep *******************************************************************
minimization off
numsteps 500000
timestep 2.0
#*** SHAKE use ******************************************************************
rigidbonds all
rigidTolerance 1e-08
#*** LANGEVIN Temperature and pressure control (comment out this part if using Berendsen bath)
#*** Temperature control (Langevin) *********************************************
#temperature 300
#langevin on
#langevintemp 300.0
#langevindamping 2.0
#langevinhydrogen on
#*** Pressure control (Langevin) ************************************************
#useGroupPressure yes
#useFlexibleCell no
#useConstantArea no
#LangevinPiston on
#LangevinPistonTarget 1.01325
#LangevinPistonPeriod 100
#LangevinPistonDecay 50
#LangevinPistonTemp 300
#*** BERENDSEN Temperature and pressure coupling (comment out this part if using Langevin control)
#*** Temperature coupling (Berendsen) ******************************************
temperature 300.0
tCouple on
tCoupleTemp 300.0
tCoupleFile $fname.tCouple.pdb ### friction coef.=1.0
tCoupleCol B
#*** Constant pressure (with Berendsen bath coupling) **************************
useGroupPressure yes
useFlexibleCell no
useConstantArea no
BerendsenPressure on
BerendsenPressureTarget 1.0
BerendsenPressureCompressibility 0.0000457
BerendsenPressureRelaxationTime 100
BerendsenPressureFreq 10
#*** PME and PBC ****************************************************************
PME on
PMETolerance 1e-06
PMEGridSpacing 1
cellBasisVector1 66.7213612 0.0000000 0.0000000
cellBasisVector2 0.0000000 73.1177434 0.0000000
cellBasisVector3 0.0000000 0.0000000 76.7255299
cellOrigin 36.3112348 42.2434630 34.9181096
wrapAll off
#*** Output *********************************************************************
outputname $outdir/$fname.ramd-md
outputenergies 100
restartname $outdir/$fname.ramd-md.rst
restartfreq 100
dcdfile $outdir/$fname.ramd-md.cdcd
dcdfreq 100
veldcdfile $outdir/$fname.ramd-md.vdcd
veldcdfreq 1000
binaryoutput off
binaryrestart on
#*** Random Acceleration Molecular Dynamics *************************************
source ../scripts/ramd-4.1.tcl
#*** sources the wrapper script ramd-4.1.tcl;
#*** please change the directory '../scripts/' to '$dir' ( the correct path );
#*** directory '$dir' should contain the scripts: ramd-4.1.tcl, ramd-4.1_script.tcl, and vectors.tcl
ramd debugLevel 0
#*** activates verbose output if set to something else than 0
ramd mdStart yes
#*** specifies whether combined RAMD-MD simulation will start with MD or RAMD;
#*** defaults to no; can be set to yes if an intial MD stint is desired
ramd ramdSteps 50
#*** specifies the number of steps in 1 ramd stint;
#*** defaults to 50
ramd mdSteps 100
#*** specifies the number of steps in 1 standard md stint;
#*** defaults to 0 (pure RAMD simulation)
ramd accel 0.5
#*** specifies the acceleration to be applied;
#*** defaults to 0.25 kcal/mol*A*amu
ramd rMinRamd 0.5
#*** specifies the minimum distance to be travelled by the ligand in 1 ramd stint;
#*** defaults to 0.01 Angstr
ramd rMinMd 2.0
#*** specifies the minimum distance in Angstr to be travelled by the ligand in 1 md stint;
#*** required if mdStep is not 0; ignored if mdSteps is 0
ramd forceOutFreq 50
#*** every 'forceOutFreq' steps detailed output of forces will be written;
#*** defaults to 0 (no detailed output)
ramd maxDist 30
#*** specifies the distance between the COMs of the ligand and the protein when the simulation is stopped
#*** defaults to 50 Angstr
ramd firstProtAtom 1
#*** specifies the index of the first protein atom
#*** defaults to 1 (assumes first atom in the system corresponds to first protein atom
ramd lastProtAtom 4596
#*** specifies the index of the last protein atom
#*** required; simulation exits if this parameter is not set
ramd firstRamdAtom 4597
#*** specifies the index of the first ligand atom
#*** required; simulation exits if this parameter is not set
ramd lastRamdAtom 4608
#*** specifies the index of the last ligand atom
#*** required; simulation exits if this parameter is not set
ramd ramdSeed 14253
#*** specifies the seed for the random number generator (for the generation of acceleration directions)
#*** defaults to 14253
#*** please change if you wish to run different trajectories
####################################################################################
EOF
$NAMD_HOME/namd2 $fname.ramd-md.namdin >> $outdir/$fname.ramd-md.namdout # Command to run the example

Просмотреть файл

@ -0,0 +1,163 @@
#! /bin/bash
#NAMD_HOME=/path/to/your/directory ## please change this to the path of your NAMD installation
NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1_tcl8.3/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2009-08-13/namd2_mvapich2-1.4rc1_tcl8.5/Linux-x86_64-intel-mvapich2
#NAMD_HOME=/sw/mcm/app/vlad/namd/2010-02-23/namd2_mvapich2-1.4rc1/Linux-x86_64-intel-mvapich2
echo "NAMD executable is : $NAMD_HOME/namd2"
echo "Linking information for the NAMD executable"
ldd $NAMD_HOME/namd2
fname=dhaawt_DCL # the RAMD example; in order to run the RAMD-MD example, change this to "example_ramd-md"
outdir=ramd_output # the RAMD output directory; change to example_ramd-md_output
if [ -d "$outdir" ]; then rm -rf $outdir; mkdir $outdir; else mkdir $outdir; fi
cat << EOF > $fname.ramd.namdin
#*** Example of the NAMD configuration file for running plain RAMD simulation
#*** Uses the 'Cornell et al. 1995' force field (topology file in AMBER format)
#*** Calculation should take about 15 min with the NAMD v2.7b on a single CPU
#**** AMBER force field ********************************************************
amber on
parmfile $fname.top
ambercoor $fname.emd2.rst
readexclusions yes
exclude scaled1-4
1-4scaling 0.83333333 #=1/1.2
scnb 2
#*** Approximations for nonbonded interactions **********************************
cutoff 12
switching off
pairlistdist 15
outputpairlists 1000
stepspercycle 10
nonbondedfreq 1
fullelectfrequency 1
margin 1
#*** Timestep *******************************************************************
minimization off
numsteps 500000
timestep 2.0
#*** SHAKE use ******************************************************************
rigidbonds all
rigidTolerance 1e-08
#*** LANGEVIN Temperature and pressure control (comment out this part if using Berendsen bath)
#*** Temperature control (Langevin) *********************************************
#temperature 300
#langevin on
#langevintemp 300.0
#langevindamping 2.0
#langevinhydrogen on
#*** Pressure control (Langevin) ************************************************
#useGroupPressure yes
#useFlexibleCell no
#useConstantArea no
#LangevinPiston on
#LangevinPistonTarget 1.01325
#LangevinPistonPeriod 100
#LangevinPistonDecay 50
#LangevinPistonTemp 300
#*** BERENDSEN Temperature and pressure coupling (comment out this part if using Langevin control)
#*** Temperature coupling (Berendsen) ******************************************
temperature 300.0
tCouple on
tCoupleTemp 300.0
tCoupleFile $fname.tCouple.pdb ### friction coef.=1.0
tCoupleCol B
#*** Constant pressure (with Berendsen bath coupling) **************************
useGroupPressure yes
useFlexibleCell no
useConstantArea no
BerendsenPressure on
BerendsenPressureTarget 1.0
BerendsenPressureCompressibility 0.0000457
BerendsenPressureRelaxationTime 100
BerendsenPressureFreq 10
#*** PME and PBC ****************************************************************
PME on
PMETolerance 1e-06
PMEGridSpacing 1
cellBasisVector1 66.7213612 0.0000000 0.0000000
cellBasisVector2 0.0000000 73.1177434 0.0000000
cellBasisVector3 0.0000000 0.0000000 76.7255299
cellOrigin 36.3112348 42.2434630 34.9181096
wrapAll off
#*** Output *********************************************************************
outputname $outdir/$fname.ramd
outputenergies 100
restartname $outdir/$fname.ramd.rst
restartfreq 100
dcdfile $outdir/$fname.ramd.cdcd
dcdfreq 100
veldcdfile $outdir/$fname.ramd.vdcd
veldcdfreq 1000
binaryoutput off
binaryrestart on
#*** Random Acceleration Molecular Dynamics *************************************
source ../scripts/ramd-4.1.tcl
#*** sources the wrapper script ramd-4.1.tcl;
#*** please change the directory '../scripts/' to '$dir' ( the correct path );
#*** directory '$dir' should contain the scripts: ramd-4.1.tcl, ramd-4.1_script.tcl, and vectors.tcl
ramd debugLevel 0
#*** activates verbose output if set to something else than 0
ramd ramdSteps 10
#*** specifies the number of steps in 1 ramd stint;
#*** defaults to 50
ramd accel 0.2
#*** specifies the acceleration to be applied;
#*** defaults to 0.25 kcal/mol*A*amu
ramd rMinRamd 0.002
#*** specifies the minimum distance to be travelled by the ligand in 1 ramd stint;
#*** defaults to 0.01 Angstr
ramd forceOutFreq 10
#*** every 'forceOutFreq' steps detailed output of forces will be written;
#*** defaults to 0 (no detailed output)
ramd maxDist 30
#*** specifies the distance between the COMs of the ligand and the protein when the simulation is stopped
#*** defaults to 50 Angstr
ramd firstProtAtom 1
#*** specifies the index of the first protein atom
#*** defaults to 1 (assumes first atom in the system corresponds to first protein atom
ramd lastProtAtom 4596
#*** specifies the index of the last protein atom
#*** required; simulation exits if this parameter is not set
ramd firstRamdAtom 4597
#*** specifies the index of the first ligand atom
#*** required; simulation exits if this parameter is not set
ramd lastRamdAtom 4608
#*** specifies the index of the last ligand atom
#*** required; simulation exits if this parameter is not set
ramd ramdSeed 14253
#*** specifies the seed for the random number generator (for the generation of acceleration directions)
#*** defaults to 14253
#*** please change if you wish to run different trajectories
####################################################################################
EOF
$NAMD_HOME/namd2 $fname.ramd.namdin >> $outdir/$fname.ramd.namdout # Command to run the example

Просмотреть файл

@ -0,0 +1,116 @@
#***********************************************************************************
# *
# Random Acceleration Molecular Dynamics (RAMD) *
# Implementation for NAMD v2.7 *
# September 2009 *
# *
# Copyright (c) 2009, EML Research gGmbH, Heidelberg, Germany *
# Author: Vlad Cojocaru *
# Email: vlad.cojocaru@eml-r.villa-bosch.de *
# *
# This Tcl script includes all the features of the implementation for AMBER 8 *
# (fortran code by Tim Johann & Ting Wang in the MCM group @ EML Research gGmbH) *
# See: http://projects.eml.org/mcmsoft/amberpatches/ *
# *
# The first Tcl script to run RAMD in NAMD (v2.5+) was written by Harish Vashisth *
# Ref: Vashisth H et al, Biophys J. 2008 Nov 1;95(9):4193-204. Epub 2008 Aug 1 *
# *
# The Vashisth script inspired some lines of this script, but mainly this script *
# is based on the fortran code written for AMBER 8 *
# *
# The structure of this script is inspired by the Adaptive Biasing Force module *
# distributed with NAMD 2.6 *
# *
# The original RAMD method is described in: *
# Ref1: Luedemann,S.K.,Lounnas,V.and R.C.Wade., *
# J Mol Biol, 303:797-811 (2000) *
# Ref2: Schleinkofer,K.,Sudarko,Winn,P.,Luedemann,S.K.and R.C.Wade, *
# EMBO Reports, 6, 584-589 (2005) *
# *
# Disclaimer: This script is for research purposes only. EML Research does not *
# assume any responsibility for the software or its use. *
# *
# !!! Quantitative reproducibility of the results obtained with AMBER 8 *
# is not possible due to a numerical errors and such like *
# *
# !!! This script is under development. *
# *
# The script along with usage examples is available at *
# http://projects.eml.org/mcm/software *
#***********************************************************************************
#*******************************************************
# Startup *
#*******************************************************
package provide ramd 4.1
#*******************************************************
# Parameter definitions
#*******************************************************
namespace eval ::RAMD {
set version "4.1"
if {! [info exists RAMDdir]} { set RAMDdir [file dirname [info script]] }
# If it fails, try the local directory
if { $RAMDdir == "" } { set RAMDdir "." }
TclForces on
TclForcesScript $RAMDdir/ramd-4.1_script.tcl
array set defaults {
ramdSteps 50
accel 0.25
rMinRamd 0.01
forceOutFreq 0
firstProtAtom 1
ramdSeed 14253
mdSteps 0
mdStart no
maxDist 50
debugLevel 0
}
set mandatory "firstRamdAtom lastRamdAtom lastProtAtom"
set silent "rMinMd"
array set capitals {}
foreach param [concat $mandatory $silent [array names defaults]] {
set capitals([string tolower $param]) $param
# not set yet
set alreadySet($param) 0
}
} ;# namespace
proc ramd { keyword value } {
set ::RAMD::keyword $keyword
set ::RAMD::value $value
namespace eval ::RAMD {
# Build list of all allowed parameter names
set list [array names capitals]
set lowercase [string tolower $keyword]
# Process parameters
if {[lsearch $list $lowercase] != -1} {
set keyword $capitals($lowercase)
if { $alreadySet($keyword) } {
print "RAMD> WARNING - multiple definitions of parameter $keyword"
}
set $keyword $value
set alreadySet($keyword) 1
return
} else {
error [format "Unknown RAMD keyword: %s" $keyword]
}
} ;# namespace
} ;# proc ramd
# define upper-case synonyms to proc abf
proc RAMD { keyword value } {
ramd $keyword $value
}
proc Ramd { keyword value } {
ramd $keyword $value
}

Просмотреть файл

@ -0,0 +1,719 @@
#***********************************************************************************
# *
# Random Acceleration Molecular Dynamics (RAMD) *
# Implementation for NAMD v2.7 *
# September 2009 *
# *
# Copyright (c) 2009, EML Research gGmbH, Heidelberg, Germany *
# Author: Vlad Cojocaru *
# Email: vlad.cojocaru@eml-r.villa-bosch.de *
# *
# This Tcl script includes all the features of the implementation for AMBER 8 *
# (fortran code by Tim Johann & Ting Wang in the MCM group @ EML Research gGmbH) *
# See: http://projects.eml.org/mcmsoft/amberpatches/ *
# *
# The first Tcl script to run RAMD in NAMD (v2.5+) was written by Harish Vashisth *
# Ref: Vashisth H et al, Biophys J. 2008 Nov 1;95(9):4193-204. Epub 2008 Aug 1 *
# *
# The Vashisth script inspired some lines of this script, but mainly this script *
# is based on the fortran code written for AMBER 8 *
# *
# The structure of this script is inspired by the Adaptive Biasing Force module *
# distributed with NAMD 2.6 *
# *
# The original RAMD method is described in: *
# Ref1: Luedemann,S.K.,Lounnas,V.and R.C.Wade., *
# J Mol Biol, 303:797-811 (2000) *
# Ref2: Schleinkofer,K.,Sudarko,Winn,P.,Luedemann,S.K.and R.C.Wade, *
# EMBO Reports, 6, 584-589 (2005) *
# *
# Disclaimer: This script is for research purposes only. EML Research does not *
# assume any responsibility for the software or its use. *
# *
# !!! Quantitative reproducibility of the results obtained with AMBER 8 *
# is not possible due to a numerical errors and such like *
# *
# !!! This script is under development. *
# *
# The script along with usage examples is available at *
# http://projects.eml.org/mcm/software *
#***********************************************************************************
namespace eval ::RAMD {
print RAMD:
print RAMD: -------------------------------------------------------------------
print RAMD: Random Acceleration Molecular Dynamics Simulation version $version
print RAMD: -------------------------------------------------------------------
print RAMD:
#***** Assign default values for the parameters not specified in the configuration file
foreach option [array names defaults] {
if {! [info exists $option]} {
set $option $defaults($option)
print [format "RAMD: %25s = %s" $option [expr $$option]]
} elseif { [info exists $option] } {
print [format "RAMD: %25s = %s" $option [expr $$option]]
}
}
#***** Check if mandatory parameters are specified in the configuration file
foreach var $mandatory {
if {! [info exists $var]} {
error "RAMD: Mandatory parameter '$var' is not set -- cannot start RAMD"
} else {
print [format "RAMD: %25s = %s" $var [expr $$var]]
}
}
#***** Check if 'forceOutFreq' is equal to 1; exit with error if that's the case
if { $forceOutFreq == 1 } { error "RAMD: ERROR: 'forceOutFreq' parameter may not be 1" }
#***** Check if 'mdSteps' is specified in the configuration file
#***** Performed pure RAMD if 'mdSteps' = 0
if { $mdSteps == 0 } {
#***** Check that the number of ramd steps is a multiple of 'forceOutFreq'; exit with error if not
set r [expr "$ramdSteps % $forceOutFreq"]
if { $r != 0 } { error "RAMD: ERROR: The number of RAMD steps is not a multiple of 'forceOutFreq'" }
print "RAMD: Pure RAMD simulation is performed"
#***** If 'mdSteps' is 0 and "mdStart" is yes, give a warning
if { $mdStart == "yes" } {
print "RAMD: WARNING: 'mdStart' has no meaning for pure RAMD simulation; it will be ignored"
}
#***** If 'mdSteps' is 0 and "rMinMd" is set, give a warning
if { [info exists rMinMd] } {
print "RAMD: WARNING: 'rMinMd' specified while 'mdSteps' is 0"
print "RAMD: WARNING: For combined RAMD-MD simulation 'mdSteps' must be greater than 0"
print "RAMD: WARNING: Ignore 'rMinMd' and perform pure RAMD simulation"
}
}
#***** Perform combined RAMD with MD simulation if 'mdSteps' is not 0 and 'rMinMd' is specified
if { $mdSteps != 0 } {
if { [info exists rMinMd] } {
#***** Check that the number of ramd and md steps are each a multiple of 'forceOutFreq'
#***** Exit with error if that's not the case
set r1 [expr "$ramdSteps % $forceOutFreq"]
set r2 [expr "$mdSteps % $forceOutFreq"]
if { $r1 != 0 || $r2 != 0 } {
error "RAMD: ERROR: The number of RAMD or MD steps must be multiple of 'forceOutFreq'"
}
foreach svar $silent {
print [format "RAMD: %25s = %s" $svar [expr $$svar]]
}
print "RAMD:"
print "RAMD: Combined RAMD-MD simulation is performed"
} elseif { ! [info exists rMinMd] } {
#***** If 'mdSteps' is not 0, exit with error if 'rMinMd' is not specified
error "RAMD: ERROR: parameter 'rMinMd' not set: 'rMinMd' is required if 'mdSteps' is greater than 0"
}
}
print "RAMD:"
#***** Make a list of all the atoms on which the force will be applied
set ramdAtoms {}
for { set i $firstRamdAtom } { $i <= $lastRamdAtom } { incr i } { lappend ramdAtoms $i }
print "RAMD: Atoms subject to the random acceleration are: $ramdAtoms"
foreach ramdAtom $ramdAtoms { addatom $ramdAtom }
#***** Define a group of the ligand atoms; the force will be applied on the center of mass of this group
set ramdGroup [ addgroup $ramdAtoms ]
#***** Define a group containing all protein atoms
set protAtoms {}
for { set i $firstProtAtom } { $i <= $lastProtAtom } { incr i } { lappend protAtoms $i }
foreach protAtom $protAtoms { addatom $protAtom }
set protGroup [ addgroup $protAtoms ]
#***** Some variable initialization
set timeStep 0; set exitFlag 0;
set prevLigCOM "0.0 0.0 0.0"; set prevProtCOM "0.0 0.0 0.0"; set prevDist 0;
#***** Initialization of simulation flags
if { $mdSteps == 0 } {
set ramdFlag 1; set mdFlag 0; set ramdStep 0; set mdStep 0;
} elseif { $mdSteps != 0 } {
if { $mdStart == "yes" } { set ramdFlag 0; set mdFlag 1; set ramdStep 0; set mdStep 0; }
if { $mdStart == "no" } { set ramdFlag 1; set mdFlag 0; set ramdStep 0; set mdStep 0; }
}
} ;# namespace
#***** In root namespace (::) for all procedures we have to add the following procedure definition
proc veclength {v} {
return [expr {sqrt([veclength2 $v])}]
}
#***** Source the vectors and matrices procedures from VMD
source $RAMD::RAMDdir/vectors.tcl
#***********************************************************
# PROCEDURE TO GENERATE RANDOMLY ORIENTED ACCELERATION
#***********************************************************
proc genRandAccel { timeStep } {
namespace eval ::RAMD {
set pi [expr "2.0*asin(1.0)"]
#***** Generate new random orientation of the ramd force
set randTheta [expr "rand()"]
set randPsi [expr "rand()"]
set theta [expr "2*$pi*$randTheta"]
set psi [expr "$pi*$randPsi"]
set rx [expr "cos($theta)*sin($psi)"]
set ry [expr "sin($theta)*sin($psi)"]
set rz [expr "cos($psi)"]
set r "$rx $ry $rz"
set lenr [veclength $r]
# Acceleration is given in kcal/mol*A*amu in the NAMD configuration file (multiply with 418.68 to get A/ps^2)
set vecAccel [vecscale [expr "$accel"] $r ]
return
} ;# namespace
} ;# proc genRandAccel {timestep}
#*****************************************************************************
# PROCEDURE TO EVALUATE THE DISTANCE TRAVELLED BY THE LIGAND IN N RAMD STEPS
#*****************************************************************************
proc evalWalkDist { timeStep prevLigCOM prevProtCOM currLigCOM currProtCOM } {
namespace eval ::RAMD {
#***** Compute the relative position of the ligand com with regard to the protein com
set prevRelLigCOM [ vecsub $prevLigCOM $prevProtCOM ]
set currRelLigCOM [ vecsub $currLigCOM $currProtCOM ]
#***** Compute the distance travelled by the ligand com during a ramd or md stint
set vecWalkDist [vecsub $currRelLigCOM $prevRelLigCOM]
set walkDist [veclength $vecWalkDist]
set vecWalkDistX [lindex $vecWalkDist 0]
set vecWalkDistY [lindex $vecWalkDist 1]
set vecWalkDistZ [lindex $vecWalkDist 2]
return
} ;# namespace
} ;# proc evalWalkDist
#**************************************************************
# PROCEDURE TO APPLY THE FORCE WHICH IS CALLED EVERY TIME STEP
#**************************************************************
proc calcforces {} {
namespace eval ::RAMD {
#***** Terminate NAMD if the ligand has exited from the protein
if { $exitFlag == 1 } {
print "EXIT: $timeStep > MAX DISTANCE LIGAND COM - PROTEIN COM REACHED"
print "EXIT: $timeStep > LIGAND EXIT EVENT DETECTED: STOP SIMULATION"
print "EXIT: $timeStep > EXIT NAMD"
set process [pid]
exec kill -9 $process
}
if { [ array exists coords ] } { array unset coords }
if { [ array exists masses ] } { array unset masses }
if { [ array exists extForces ] } { array unset extForces }
if { [ array exists totForces ] } { array unset totForces }
#***** Load coordinates for all the atoms and groups defined
loadcoords coords
#***** Load masses for all the atoms and groups defined
loadmasses masses
#***** Load external forces from previous time step for all the atoms and groups defined
loadforces extForces
#***** Load total forces from previous time step for all the atoms and groups defined
loadtotalforces totForces
#***** Calculate the mass of the ligand
set ligMass 0
foreach ramdAtom $ramdAtoms {
set ligMass [expr $ligMass + $masses($ramdAtom)]
}
#***** Calculate the position of protein and ligand COM
set protCOM "$coords($protGroup)"
set ligCOM "$coords($ramdGroup)"
#***** Initialize ramd simulation or combined ramd-md simulation that begins with ramd
if { $timeStep == 0 && $ramdFlag == 1 && $mdFlag == 0 } {
expr "srand($ramdSeed)"
set vMin [ expr "($rMinRamd)/($ramdSteps)" ]
if { $mdSteps == 0 } {
print "RAMD: $timeStep ***** INITIALIZE RAMD SIMULATION *****"
} else {
print "RAMD: $timeStep ***** INITIALIZE COMBINED RAMD-MD SIMULATION *****"
}
print "RAMD: $timeStep >>> minimum travelled distance (A): $rMinRamd"
print "RAMD: $timeStep >>> minimum velocity (A/fs): $vMin"
#***** Initial com positions
set currLigCOM $ligCOM; set currProtCOM $protCOM
print "RAMD: $timeStep >>> LIGAND COM IS: $currLigCOM"
print "RAMD: $timeStep >>> PROTEIN COM IS: $currProtCOM"
#***** Evaluate initial distance between ligand com and protein com
set currDist [veclength [vecsub $currLigCOM $currProtCOM]]
print "RAMD: $timeStep >>> DISTANCE LIGAND COM - PPROTEIN COM IS: DIST = $currDist"
#***** Generate an initial orientation for the acceleration to be applied when ramd is switched on
genRandAccel $timeStep
print "RAMD: $timeStep >>> INITIAL RANDOM DIRECTION: $r :: ||r|| = $lenr"
print "RAMD: $timeStep ***** START WITH $ramdSteps STEPS OF RAMD SIMULATION *****"
#***** Reset the positions of the ligand and protein COMs and the distance ligand com - protein com
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
incr timeStep
return
}
#***** Initialize combined ramd-md simulation that begins with standard md
if { $timeStep == 0 && $ramdFlag == 0 && $mdFlag == 1 } {
expr "srand($ramdSeed)"
set vMin [expr "($rMinMd)/($mdSteps)"]
print "MD: $timeStep ***** INITIALIZE COMBINED RAMD-MD SIMULATION *****"
print "MD: $timeStep >>> minimum travelled distance (A): $rMinMd"
print "MD: $timeStep >>> minimum velocity (A/fs): $vMin"
#***** Initial com positions
set currLigCOM $ligCOM; set currProtCOM $protCOM
print "MD: $timeStep >>> LIGAND COM IS: $currLigCOM"
print "MD: $timeStep >>> PROTEIN COM IS: $currProtCOM"
#***** Evaluate initial distance between ligand com and protein com
set currDist [veclength [vecsub $currLigCOM $currProtCOM]]
print "MD: $timeStep >>> DISTANCE LIGAND COM - PPROTEIN COM IS: DIST = $currDist"
#***** Generate an initial orientation for the acceleration to be applied when ramd is switched on
#***** This is ignored for the first MD stint, and no acceleration is applied
genRandAccel $timeStep
print "MD: $timeStep >>> GENERATED RANDOM DIRECTION: $r :: ||r|| = $lenr"
print "MD: $timeStep >>> DIRECTION WILL BE IGNORED FOR THE FIRST $mdSteps MD STEPS"
print "MD: $timeStep ***** START WITH $mdSteps STEPS OF STANDARD MD SIMULATION *****"
#***** Reset the positions of the ligand and protein COMs and the distance ligand com - protein com
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
incr timeStep
return
}
#***** Perform ramd simulation
if { $timeStep != 0 && $ramdFlag == 1 && $mdFlag == 0 && $exitFlag == 0 } {
#***** Count ramd steps
incr ramdStep
if { $debugLevel != 0 } {
print "RAMD DEBUG: TIMESTEP IS: $timeStep; RAMD STEP IS: $ramdStep; MD STEP IS: $mdStep"
}
#***** Define and apply the force to each atom of the ligand
foreach ramdAtom $ramdAtoms {
set atomMass "$masses($ramdAtom)"
set atomForce [ vecscale $atomMass $vecAccel ]
set atomForceValue [ veclength "$atomForce" ]
addforce $ramdAtom $atomForce
if { $debugLevel != 0 } { print "RAMD DEBUG: ATOM $ramdAtom: MASS $atomMass: ADD FORCE $atomForceValue" }
unset atomForce
unset atomMass
unset atomForceValue
}
#***** Define the force vector that is applied to the center of mass of the ligand
set force [vecscale $ligMass $vecAccel]
set fx [lindex $force 0]
set fy [lindex $force 1]
set fz [lindex $force 2]
#***** Check the magnitude of the force
set f [expr "sqrt((($fx)*($fx)+($fy)*($fy)+($fz)*($fz)))"]
#***** Set flag for writing force output
if { $forceOutFreq != 0 } { set outputFlag [expr "$ramdStep % $forceOutFreq"] }
#***** Write force output every 'forceOutFreq' steps
if { [ array exists extForces ] && [ array exists totForces ] && $outputFlag == 0 } {
#***** Write the force vector and direction
print "RAMD FORCE: $timeStep > LIGAND COM is: $ligCOM"
print "RAMD FORCE: $timeStep > PROTEIN COM IS $protCOM"
print "RAMD FORCE: $timeStep > EXTERNAL FORCE VECTOR (F): $force; ||F|| = $f"
print "RAMD FORCE: $timeStep > EXTERNAL FORCE DIRECTION (r): $r; ||r|| = $lenr"
#***** Calculate external and total forces acting on the ligand
set totLigForceX 0; set totLigForceY 0; set totLigForceZ 0; set totLigForceV 0;
set extLigForceX 0; set extLigForceY 0; set extLigForceZ 0; set extLigForceV 0;
foreach ramdAtom $ramdAtoms {
set atomMass "$masses($ramdAtom)"
set totAtomForce "$totForces($ramdAtom)"
set totAtomForceX [ lindex $totAtomForce 0 ]
set totAtomForceY [ lindex $totAtomForce 1 ]
set totAtomForceZ [ lindex $totAtomForce 2 ]
set totAtomForceV [ veclength "$totAtomForce" ]
set totLigForceX [ expr "$totLigForceX + $totAtomForceX" ]
set totLigForceY [ expr "$totLigForceY + $totAtomForceY" ]
set totLigForceZ [ expr "$totLigForceZ + $totAtomForceZ" ]
set totLigForceV [ expr "$totLigForceV + $totAtomForceV" ]
set extAtomForce "$extForces($ramdAtom)"
set extAtomForceX [ lindex "$extAtomForce" 0 ]
set extAtomForceY [ lindex "$extAtomForce" 1 ]
set extAtomForceZ [ lindex "$extAtomForce" 2 ]
set extAtomForceV [ veclength "$extAtomForce" ]
set extLigForceX [ expr "$extLigForceX + $extAtomForceX" ]
set extLigForceY [ expr "$extLigForceY + $extAtomForceY" ]
set extLigForceZ [ expr "$extLigForceZ + $extAtomForceZ" ]
set extLigForceV [ expr "$extLigForceV + $extAtomForceV" ]
if { $debugLevel != 0 } {
print "RAMD DEBUG: ATOM $ramdAtom: MASS $atomMass: EXT FORCE $extAtomForceV"
print "RAMD DEBUG: ATOM $ramdAtom: MASS $atomMass: TOT FORCE $totAtomForceV"
}
unset atomMass
unset totAtomForceX; unset totAtomForceY; unset totAtomForceZ; unset totAtomForceV; unset totAtomForce
unset extAtomForceX; unset extAtomForceY; unset extAtomForceZ; unset extAtomForceV; unset extAtomForce
}
set totLigForce "$totLigForceX $totLigForceY $totLigForceZ"
set extLigForce "$extLigForceX $extLigForceY $extLigForceZ"
#***** Write external forces acting on the ligand com for debugging purposes
if { $debugLevel !=0 } {
print "RAMD DEBUG: $timeStep > EXTERNAL FORCE ON THE LIGAND COM IS: $extLigForce ($extLigForceV)"
}
#***** Write total forces acting on the ligand com
print "RAMD FORCE: $timeStep > TOTAL FORCE ON THE LIGAND COM IS: $totLigForce ($totLigForceV)"
unset totLigForce; unset totLigForceV; unset extLigForce; unset extLigForceV;
} elseif { ! [ array exists extForces ] && [ array exists totForces ] && $outputFlag == 0 } {
error "RAMD: $timeStep > ERROR: EXTERNAL FORCES NOT PRESENT DURING RAMD STEP: EXIT NAMD"
}
#***** Set flag for evaluating ramd simulation
set evalRamdFlag [expr "$ramdStep % $ramdSteps"]
#***** Evaluate ramd stint
if { $evalRamdFlag == 0 } {
print "RAMD: $timeStep ***** EVALUATE $ramdSteps RAMD STEPS AT TIMESTEP $timeStep *****"
#***** com positions
set currLigCOM $ligCOM; set currProtCOM $protCOM
if { $debugLevel !=0 } {
print "RAMD DEBUG: $timeStep > PREVIOUS LIGAND COM IS: $prevLigCOM"
print "RAMD DEBUG: $timeStep > PREVIOUS PROTEIN COM IS: $prevProtCOM"
print "RAMD DEBUG: $timeStep > CURRENT LIGAND COM IS: $currLigCOM"
print "RAMD DEBUG: $timeStep > CURRENT PROTEIN COM IS: $currProtCOM"
}
#***** Evaluate distance between ligand com and protein com
set currDist [veclength [vecsub $currLigCOM $currProtCOM]]
#***** Evaluate the change in the distance between the protein and the ligand com during the ramd stint
set diffDist [expr "${currDist}-${prevDist}"]
print "RAMD: $timeStep >>> DISTANCE LIGAND COM - PPROTEIN COM IS: $currDist; IT CHANGED BY $diffDist"
#***** Check if the ligand has exited the protein
if { $currDist >= $maxDist } { set exitFlag 1; return }
#***** Compute the distance travelled by the ligand com during the ramd stint
evalWalkDist $timeStep $prevLigCOM $prevProtCOM $currLigCOM $currProtCOM
#***** Evaluate whether a new force direction will be generated
if { $walkDist <= $rMinRamd } {
genRandAccel $timeStep
print "RAMD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (< $rMinRamd)"
print "RAMD: $timeStep >>> CONTINUE WITH $ramdSteps STEPS OF RAMD SIMULATION"
print "RAMD: $timeStep >>> CHANGE ACCELERATION DIRECTION TO: $r; ||r|| = $lenr"
#***** Reset the ramd step count
#***** Reset the positions of the ligand and protein COMs
set ramdStep 0; set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
} elseif { $walkDist > $rMinRamd && $mdSteps == 0 } {
print "RAMD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (> $rMinRamd)"
print "RAMD: $timeStep >>> CONTINUE WITH $ramdSteps STEPS OF RAMD SIMULATION"
print "RAMD: $timeStep >>> KEEP PREVIOUS ACCELERATION DIRECTION: $r; ||r|| = $lenr"
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
} elseif { $walkDist > $rMinRamd && $mdSteps != 0 } {
print "RAMD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (> $rMinRamd)"
print "RAMD: $timeStep >>> SWITCH TO $mdSteps STEPS OF STANDARD MD SIMULATION"
#***** Reset the flag values
set ramdStep 0; set ramdFlag 0; set mdFlag 1
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Ensure that the positions of the ligand and protein COMs are reset after the evaluation
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Unset the force
if { [info exists force] } { unset force }
if { [info exists fx] } { unset fx }
if { [info exists fy] } { unset fy }
if { [info exists fz] } { unset fz }
if { [info exists f] } { unset f }
if { [info exists totLigForce] } { unset totLigForce }
if { [info exists extLigForce] } { unset extLigForce }
if { [info exists totLigForceV] } { unset totLigForceV }
if { [info exists extLigForceV] } { unset extLigForceV }
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Perform standard md simulation
if { $timeStep != 0 && $ramdFlag == 0 && $mdFlag == 1 && $exitFlag == 0 } {
#***** Count the md steps
incr mdStep
#***** If debug level increased, check for the definition of the force
if { $debugLevel != 0 } {
print "MD DEBUG: TIMESTEP IS: $timeStep; RAMD STEP IS: $ramdStep; MD STEP IS: $mdStep"
if { ! [ info exists force ] } {
print "MD DEBUG: EXTERNAL FORCE NOT DEFINED"
} else {
print "MD DEBUG: WARNING: EXTERNAL FORCE VECTOR DEFINED: $force"
}
}
#***** Set flag for writing force output
if { $forceOutFreq != 0 } { set outputFlag [expr "$mdStep % $forceOutFreq"] }
#***** Write force output every 'forceOutFreq' steps
if { ! [ array exists extForces ] && [ array exists totForces ] && $outputFlag == 0 } {
#***** Write the positions of the protein and ligand COMs
print "MD FORCE: $timeStep > LIGAND COM is: $ligCOM"
print "MD FORCE: $timeStep > PROTEIN COM IS $protCOM"
#***** Calculate total forces acting on the ligand com
set totLigForceX 0; set totLigForceY 0; set totLigForceZ 0; set totLigForceV 0
foreach ramdAtom $ramdAtoms {
set atomMass "$masses($ramdAtom)"
set totAtomForce "$totForces($ramdAtom)"
set totAtomForceX [ lindex $totAtomForce 0 ]
set totAtomForceY [ lindex $totAtomForce 1 ]
set totAtomForceZ [ lindex $totAtomForce 2 ]
set totAtomForceV [ veclength "$totAtomForce" ]
set totLigForceX [ expr "$totLigForceX + $totAtomForceX" ]
set totLigForceY [ expr "$totLigForceY + $totAtomForceY" ]
set totLigForceZ [ expr "$totLigForceZ + $totAtomForceZ" ]
set totLigForceV [ expr "$totLigForceV + $totAtomForceV" ]
if { $debugLevel != 0 } {
print "MD DEBUG: ATOM $ramdAtom: MASS $atomMass: TOT FORCE $totAtomForceV"
}
unset atomMass
unset totAtomForceX; unset totAtomForceY; unset totAtomForceZ; unset totAtomForceV; unset totAtomForce
}
set totLigForce "$totLigForceX $totLigForceY $totLigForceZ"
#***** Write total forces acting on the ligand COM
print "MD FORCE: $timeStep > TOTAL FORCE ON THE LIGAND COM IS: $totLigForce ($totLigForceV)"
} elseif { [ array exists extForces ] && [ array exists totForces ] && $outputFlag == 0 } {
error "MD: $timeStep > ERROR: EXTERNAL FORCES PRESENT DURING MD STEP: EXIT NAMD"
}
#***** Evaluate standard md stint
set evalMdFlag [expr "$mdStep % $mdSteps"]
if { $evalMdFlag == 0 } {
print "MD: $timeStep ***** EVALUATE $mdSteps STANDARD MD STEPS AT TIMESTEP $timeStep *****"
#***** com positions
set currLigCOM $ligCOM; set currProtCOM $protCOM
if { $debugLevel !=0 } {
print "MD DEBUG: $timeStep > PREVIOUS LIGAND COM IS: $prevLigCOM"
print "MD DEBUG: $timeStep > PREVIOUS PROTEIN COM IS: $prevProtCOM"
print "MD DEBUG: $timeStep > CURRENT LIGAND COM IS: $currLigCOM"
print "MD DEBUG: $timeStep > CURRENT PROTEIN COM IS: $currProtCOM"
}
#***** Evaluate distance between ligand com and protein com
set currDist [veclength [vecsub $currLigCOM $currProtCOM]]
#***** Evaluate the change in the distance between the protein the ligand com during the md stint
set diffDist [expr "${currDist}-${prevDist}"]
print "MD: $timeStep >>> DISTANCE LIGAND COM - PPROTEIN COM IS: $currDist; IT CHANGED BY: $diffDist"
#***** Check if the ligand has exited the protein
if { $currDist >= $maxDist } { set exitFlag 1; return }
#***** Compute the distance travelled by the ligand com during the md stint
evalWalkDist $timeStep $prevLigCOM $prevProtCOM $currLigCOM $currProtCOM
#***** Evaluate whether a switch to ramd is required
if { $walkDist <= $rMinMd && $diffDist > 0 } {
print "MD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (< $rMinMd)"
print "MD: $timeStep >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED"
print "MD: $timeStep >>> SWITCH TO $ramdSteps STEPS OF RAMD SIMULATION"
print "MD: $timeStep >>> KEEP PREVIOUS ACCELERATION DIRECTION: $r; ||r|| = $lenr"
#***** Reset the flags
set mdStep 0; set ramdFlag 1; set mdFlag 0
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
} elseif { $walkDist <= $rMinMd && $diffDist < 0 } {
genRandAccel $timeStep
print "MD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (< $rMinMd)"
print "MD: $timeStep >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM DECREASED"
print "MD: $timeStep >>> SWITCH TO $ramdSteps STEPS OF RAMD SIMULATION"
print "MD: $timeStep >>> CHANGE ACCELERATION DIRECTION TO: $r; ||r|| = $lenr"
#***** Reset the flags
set mdStep 0; set ramdFlag 1; set mdFlag 0
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
} elseif { $walkDist > $rMinMd && $diffDist > 0 } {
print "MD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (> $rMinMd)"
print "MD: $timeStep >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM INCREASED"
print "MD: $timeStep >>> CONTINUE WITH $mdSteps STEPS OF STANDARD MD SIMULATION"
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
} elseif { $walkDist > $rMinMd && $diffDist < 0 } {
genRandAccel $timeStep
print "MD: $timeStep >>> THE DISTANCE TRAVELLED BY THE LIGAND IS: $walkDist (> $rMinMd)"
print "MD: $timeStep >>> THE DISTANCE BETWEEN THE LIGAND COM AND THE PROTEIN COM DECREASED"
print "MD: $timeStep >>> SWITCH TO $ramdSteps STEPS OF RAMD SIMULATION"
print "MD: $timeStep >>> CHANGE ACCELERATION DIRECTION TO: $r; ||r|| = $lenr"
set mdStep 0; set ramdFlag 1; set mdFlag 0
#***** Reset the positions of the ligand and protein COMs
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Ensure the positions of the ligand and protein COMs are reset
set prevLigCOM "$currLigCOM"; set prevProtCOM "$currProtCOM"; set prevDist "$currDist"
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Unset the force
if { [info exists force] } { unset force }
if { [info exists fx] } { unset fx }
if { [info exists fy] } { unset fy }
if { [info exists fz] } { unset fz }
if { [info exists f] } { unset f }
if { [info exists totLigForce] } { unset totLigForce }
if { [info exists extLigForce] } { unset extLigForce }
if { [info exists totLigForceV] } { unset totLigForceV }
if { [info exists extLigForceV] } { unset extLigForceV }
#***** Increment time step and go to the next time step right now
incr timeStep
return
}
#***** Check that during all timesteps at least one of the flags 'ramdFlag' and 'mdFlag' is activated
#***** Exit with error if that's not the case
if { $timeStep != 0 && $ramdFlag == 0 && $mdFlag == 0 && $exitFlag == 0 } {
error "RAMD: $timeStep > ERROR: NEITHER THE RAMD NOR THE MD FLAG IS ACTIVATED; EXIT NAMD"
}
#***** Check that during all timesteps the flags 'ramdFlag' and 'mdFlag' are not simultaneously activated
#***** Exit with error if that's not the case
if { $timeStep != 0 && $ramdFlag == 1 && $mdFlag == 1 && $exitFlag == 0 } {
error "RAMD: $timeStep > ERROR: BOTH THE RAMD AND MD FLAGS ARE ACTIVATED; EXIT NAMD"
}
#***** Increment time step and go to the next time step right now
incr timeStep
return
} ;# namespace
} ;# proc calcforces {}
#*****************
# END
#*****************

Просмотреть файл

@ -0,0 +1,362 @@
#########################################################################
# #
# (C) Copyright 1995-2003 The Board of Trustees of the #
# University of Illinois #
# All Rights Reserved #
# #
#########################################################################
############################################################################
# RCS INFORMATION:
#
# $RCSfile: vectors.tcl,v $
# $Author: char $ $Locker: $ $State: Exp $
# $Revision: 1.1 $ $Date: 2010/02/06 07:30:34 $
#
############################################################################
# DESCRIPTION:
# These routines handle the vector and matrix manipulations needed for
# doing 3D transformations.
#
############################################################################
# This is part of the VMD installation.
# For more information about VMD, see http://www.ks.uiuc.edu/Research/vmd
# a vector is a n element list of numbers (in column form)
# a matrix is a 4x4 matrix represeneted as a 4 element list of 4
# 4 elements, in row major form
#
package provide vectors 1.0.0
set M_PI 3.14159265358979323846
# Function: veczero
# Returns : the zero vector, {0 0 0}
proc veczero {} {
return {0 0 0}
}
# Function: vecdist {vector v1} {vector v2}
# Returns : || v2 - v1 ||
# This is syntactic sugar.
proc vecdist {x y} {
veclength [vecsub $x $y]
}
# Function: vecdot {vector x} {vector y}
# Returns : the vector dot product v1 * v2
proc vecdot {x y} {
if {[llength $x] != [llength $y]} {
error "vecdot needs vectors of the same size: $x : $y"
}
set ret 0
foreach t1 $x t2 $y {
set ret [expr $ret + $t1 * $t2]
}
return $ret
}
# Function: veccross {v1} {v2}
# Returns : cross product of v1 and v2
proc veccross {x y} {
# J. Henin, 11/2004
# lassign is not available in NAMD's Tcl interpreter
# lassign $x x1 x2 x3
# lassign $y y1 y2 y3
foreach {x1 x2 x3} $x {}
foreach {y1 y2 y3} $y {}
# J. Henin, 11/2004 - end
set ret {}
lappend ret [expr $x2 * $y3 - $y2 * $x3]
lappend ret [expr - $x1 * $y3 + $y1 * $x3]
lappend ret [expr $x1 * $y2 - $y1 * $x2]
return $ret
}
# Function: veclength2 {v}
# Returns: the square of the vector length
proc veclength2 {v} {
set retval 0
foreach term $v {
set retval [expr $retval + $term * $term]
}
return $retval
}
# Function: vecnorm {v}
# Returns: the normal vector pointing along v
proc vecnorm {v} {
set sum [veclength $v]
set retval {}
foreach term $v {
lappend retval [expr $term / $sum]
}
return $retval
}
# Function: vecinvert {v}
# Returns: a vector with all terms inverted
proc vecinvert {v} {
set ret {}
foreach i $v {
lappend ret [expr -$i]
}
return $ret
}
# Function: coordtrans {matrix} {vector}
# Returns : the vector = {matrix} * {vector}
# If the matrix is 4x4 and the vector is length 3, the 4th element is 1
proc coordtrans {m v} {
if { [llength $v] == 3} {
lappend v 1
return [lrange [vectrans $m $v] 0 2]
}
return [vectrans $m $v]
}
# Function: transidentity
# Returns: the identity matrix
proc transidentity { } {
return "{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} {0.0 0.0 1.0 0.0} {0.0 0.0 0.0 1.0}"
}
# Function: transtranspose {matrix}
# Returns : the transpose of the matrix, as a matrix -- must be 4x4
proc transtranspose {m} {
lassign $m m1 m2 m3 m4
lassign $m1 m11 m12 m13 m14
lassign $m2 m21 m22 m23 m24
lassign $m3 m31 m32 m33 m34
lassign $m4 m41 m42 m43 m44
set retval {}
lappend retval [concat $m11 $m21 $m31 $m41]
lappend retval [concat $m12 $m22 $m32 $m42]
lappend retval [concat $m13 $m23 $m33 $m43]
lappend retval [concat $m14 $m24 $m34 $m44]
return $retval
}
# Function: find_rotation_value <list reference>
# Returns: value of the rotation in radians with the appropriate
# list elements removed
proc find_rotation_value {varname} {
global M_PI
upvar $varname a
if {![info exists a]} {
error "find_rotation_value: don't know upvar $varname"
}
set amount [expr [lvarpop a] + 0.0]
set units [lvarpop a]
if {$units == "rad" || $units == "radians" || $units == "radian"} {
# set amount $amount
} elseif {$units == "pi"} {
set amount [expr $amount * $M_PI]
} elseif {$units == "deg" || $units == "degrees" || $units == "degree"} {
set amount [expr $amount / 180.0 * $M_PI]
} else {
if {$units != ""} {
lvarpush a $units
}
# default is degrees
set amount [expr $amount / 180.0 * $M_PI]
}
return $amount
}
# Function: transaxis {'x' | 'y' | 'z'} amount { | deg | rad | pi }
# Returns: the matrix to rotate "amount" radians about the given axis
# the default angle measurement is "degrees"
proc transaxis {axis args} {
global M_PI
if { $axis != "x" && $axis != "y" && $axis != "z" } {
error "transaxis must get either x, y, or z, not $axis"
}
set amount [find_rotation_value args]
if { $args != ""} {
error "Unknown angle measurement '$args' in transaxis"
}
set cos [expr cos($amount)]
set mcos [expr -$cos]
set sin [expr sin($amount)]
set msin [expr -$sin]
if { $axis == "x" } {
set retval "{1.0 0.0 0.0 0.0}"
lappend retval [concat 0.0 $cos $msin 0.0]
lappend retval [concat 0.0 $sin $cos 0.0]
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
if { $axis == "y" } {
set retval {}
lappend retval [concat $cos 0.0 $sin 0.0]
lappend retval {0.0 1.0 0.0 0.0}
lappend retval [concat $msin 0.0 $cos 0.0]
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
if { $axis == "z" } {
set retval {}
lappend retval [concat $cos $msin 0.0 0.0]
lappend retval [concat $sin $cos 0.0 0.0]
lappend retval {0.0 0.0 1.0 0.0}
lappend retval {0.0 0.0 0.0 1.0}
return $retval
}
}
# Function: transoffset <vector>
# Returns: the matrix needed to translate by vector
proc transoffset {v} {
lassign $v x y z
return "{1.0 0.0 0.0 $x} {0.0 1.0 0.0 $y} {0.0 0.0 1.0 $z} {0.0 0.0 0.0 1.0}"
}
# Function: transabout <vector> amount { | deg | rad | pi }
# Returns: rotation matrix the given amount around the given axis
proc transabout {axis args} {
lassign $args amount units
set transf [transvec $axis]
set transfinv [transvecinv $axis]
set rot [transaxis x $amount $units]
return [transmult $transf $rot $transfinv]
}
# Function: trans
# this has lots of options
#
proc trans {args} {
set origin {0.0 0.0 0.0}
set offset {0.0 0.0 0.0}
set axis {1.0 0.0 0.0}
set amount 0
set rotmat [transidentity]
while { [set keyword [lvarpop args]] != ""} {
if { $keyword == "origin" } {
set origin [lvarpop args]
continue
}
if { $keyword == "offset" } {
set offset [lvarpop args]
continue
}
if { $keyword == "center" } {
set offset [lvarpop args]
set origin $offset
continue
}
# alias 'x' to 'axis x', 'y' to 'axis y', 'z' to 'axis z'
if { $keyword == "x" || $keyword == "y" || $keyword == "z"} {
lvarpush args $keyword
set keyword "axis"
}
if { $keyword == "axis" } {
set axis [lvarpop args]
if {$axis == "x"} {
set axis {1.0 0.0 0.0}
} elseif {$axis == "y"} {
set axis {0.0 1.0 0.0}
} elseif {$axis == "z"} {
set axis {0.0 0.0 1.0}
} elseif {[llength $axis] != 3} {
error "transform: axis must be 'x', 'y', 'z' or a vector, not $axis"
}
# find out how much to rotate
set amount [find_rotation_value args]
# and apply to the current rotation matrix
set rotmat [transmult [transabout $axis $amount rad] $rotmat]
set axis {1.0 0.0 0.0}
set amount 0.0
continue
}
if { $keyword == "bond" } {
set v1 [lvarpop args]
set v2 [lvarpop args]
set origin $v1
set offset $v1
set axis [vecsub $v2 $v1]
# find out how much to rotate
set amount [find_rotation_value args]
# puts "Axis is: $axis"
set rotmat [transabout $axis $amount rad]
# puts "Rotmat is: $rotmat"
continue
}
if { $keyword == "angle" } {
set v1 [lvarpop args]
set v2 [lvarpop args]
set v3 [lvarpop args]
set origin $v2
set offset $v2
set axis [veccross [vecsub $v2 $v1] [vecsub $v3 $v2]]
if {[veclength $axis] <= 0.0} {
if {[veclength [veccross [vecnorm [vecsub $v1 $v2]] {1.0 0.0 0.0}]] < 0.01} {
set axis {0.0 0.0 1.0}
puts "Warning: transform found degenerate 'angle'; using z axis"
} else {
set axis {1.0 0.0 0.0}
puts "Warning: transform found degenerate 'angle'; using x axis"
}
} else {
set axis [vecnorm $axis]
}
# find out how much to rotate
set amount [find_rotation_value args]
set rotmat [transabout $axis $amount rad]
continue
}
error "Unknown command for 'transform': $keyword"
}
# end of while loop
set origmat [transoffset [vecinvert $origin]]
set offsetmat [transoffset $offset]
# puts "Orig: $origmat"
# puts "Offset: $offsetmat"
# puts "Rotmat: $rotmat"
# puts [list Result: [transmult $offsetmat $rotmat $origmat]]
return [transmult $offsetmat $rotmat $origmat]
}
# end of "transform"
# Function: trans_from_rotate
# Returns a transformation matrix given a 3x3 rotation matrix
proc trans_from_rotate {rotate} {
lassign $rotate a b c
return "{$a 0} {$b 0} {$c 0} {0 0 0 1}"
}
# Function: trans_to_rotate
# Returns: the upper left 3x3 rotation component
proc trans_to_rotate {trans_matrix} {
lassign $trans_matrix a b c
lassign $a a1 a2 a3
lassign $b b1 b2 b3
lassign $c c1 c2 c3
return "{$a1 $a2 $a3} {$b1 $b2 $b3} {$c1 $c2 $c3}"
}
# Function: trans_from_offset
# Returns: the transformation corresponding to an offset vector
proc trans_from_offset {offset} {
return [transoffset $offset]
}
# Function: trans_to_offset
# Returns: the transformation offset of the given matrix
proc trans_to_offset {trans_matrix} {
return [coordtrans $trans_matrix {0 0 0}]
}
# set nothing "Okay!"

Просмотреть файл

@ -0,0 +1,304 @@
replicaBarrier
set nr [numReplicas]
if { $num_replicas != $nr } {
error "restart with wrong number of replicas"
}
set r [myReplica]
set replica_id $r
if {[info exists restart_root]} { #restart
set restart_root [format $restart_root $replica_id]
source $restart_root.$replica_id.tcl
} else {
set i_job 0
set i_run 0
set i_step 0
if {[info exists first_timestep]} {
set i_step $first_timestep
}
set blockera [expr $num_replicasa-1]
set blockerb [expr $num_replicasa+$num_replicasb-1]
set replica(index) $r
set replica(ParamID) $r
set replica(loc.a) $r
set replica(index.a) $r
set replica(loc.b) $r
set replica(index.b) $r
set replica(exchanges_attempted) 0
set replica(exchanges_accepted) 0
if { $r % 2 == 0 && $r+1 < $nr } {
if { $drude_model != 0 } {
if { $r < $blockerb } {
set replica(loc.a) [expr $r+1]
set replica(index.a) [expr $r+1]
}
} else {
set replica(loc.a) [expr $r+1]
set replica(index.a) [expr $r+1]
}
}
if { $r % 2 == 1 && $r > 0 } {
if { $drude_model != 0 } {
if { $r <= $blockerb } {
set replica(loc.a) [expr $r-1]
set replica(index.a) [expr $r-1]
}
} else {
set replica(loc.a) [expr $r-1]
set replica(index.a) [expr $r-1]
}
}
if { $r % 2 == 1 && $r+1 < $nr } {
if { $drude_model != 0 } {
if { $r < $blockerb } {
set replica(loc.b) [expr $r+1]
set replica(index.b) [expr $r+1]
}
} else {
set replica(loc.b) [expr $r+1]
set replica(index.b) [expr $r+1]
}
}
if { $r % 2 == 0 && $r > 0 } {
if { $drude_model != 0 } {
if { $r <= $blockerb } {
set replica(loc.b) [expr $r-1]
set replica(index.b) [expr $r-1]
}
} else {
set replica(loc.b) [expr $r-1]
set replica(index.b) [expr $r-1]
}
}
}
set job_output_root "$output_root.job$i_job"
firsttimestep $i_step
proc replica_WCA_rcut1 { i } {
global num_replicasa
if { $i==0 } {
return [ expr 0.0 ]
} else {
return [ expr ($i-1)*1.0/($num_replicasa-1) ]
}
}
proc replica_WCA_rcut2 { i } {
global num_replicasa
return [ expr $i*1.0/($num_replicasa-1) ]
}
proc replica_WCA_rcut3 { i } {
global num_replicasa
if { $i==($num_replicasa-1) } {
return [ expr 1.0 ]
} else {
return [ expr ($i+1)*1.0/($num_replicasa-1) ]
}
}
proc replica_lambda { i } {
global num_replicasa num_replicasb num_replicasc blockera blockerb
return [ expr ($i <= $blockerb)?($i-$num_replicasa)*1.0/($num_replicasb-1.0):($i-$num_replicasa-$num_replicasb)*1.0/($num_replicasc-1.0) ]
}
proc setup_parameters { ID } {
global blockera blockerb
if { $ID <= $blockera } {
set WCA_rcut1 [replica_WCA_rcut1 $ID]
set WCA_rcut2 [replica_WCA_rcut2 $ID]
set WCA_rcut3 [replica_WCA_rcut3 $ID]
alchFepWCArcut1 $WCA_rcut1
alchFepWCArcut2 $WCA_rcut2
alchFepWCArcut3 $WCA_rcut3
alchRepLambda 0.0
} elseif { $ID <= $blockerb } {
set DispLambda [replica_lambda $ID]
alchDispLambda $DispLambda
} else {
set ElecLambda [replica_lambda $ID]
alchElecLambda $ElecLambda
}
}
proc save_callback {labels values} {
global saved_labels saved_values
set saved_labels $labels
set saved_values $values
}
callback save_callback
proc save_array {} {
global saved_labels
global saved_values
global saved_array
foreach label $saved_labels value $saved_values {
set saved_array($label) $value
}
}
seed [expr int(0*srand(int(100000*rand()) + 100*$replica_id) + 100000*rand() + 1)]
outputname [format $job_output_root.$replica_id $replica_id]
if {$i_run} { #restart
bincoordinates $restart_root.$replica_id.coor
binvelocities $restart_root.$replica_id.vel
extendedSystem $restart_root.$replica_id.xsc
} else {
temperature $temperature
}
outputEnergies [expr $steps_per_run]
dcdFreq [expr $steps_per_run * $runs_per_frame]
source $namd_config_file
alchOutFile [format $job_output_root.$replica_id.wham.fepout $replica_id]
setup_parameters $replica(ParamID)
set history_file [open [format "$job_output_root.$replica_id.history" $replica_id] "w"]
fconfigure $history_file -buffering line
while {$i_run < $num_runs} {
if { $i_run == 0 } {
minimize 20
run 5000
}
if { $i_run % 2 == 0 } {
set swap a; set other b
} else {
set swap b; set other a
}
run $steps_per_run
save_array
incr i_step $steps_per_run
set POTENTIAL [expr $saved_array(TOTAL) - $saved_array(KINETIC)]
set doswap 0
if { $replica(index) < $replica(index.$swap) } {
set POTENTIAL2 [replicaRecv $replica(loc.$swap)]
}
if { $replica(index) > $replica(index.$swap) } {
replicaSend $POTENTIAL $replica(loc.$swap)
}
if { $replica(index) > $replica(index.$swap) } {
set POTENTIAL2 [replicaRecv $replica(loc.$swap)]
}
if { $replica(index) < $replica(index.$swap) } {
replicaSend $POTENTIAL $replica(loc.$swap)
}
if { $replica(index) != $replica(index.$swap) } {
set replica(ParamID) $replica(index.$swap)
setup_parameters $replica(ParamID)
run 0
save_array
set POTENTIAL_NEW [expr $saved_array(TOTAL) - $saved_array(KINETIC)]
if { $replica(index) < $replica(index.$swap) } {
set POTENTIAL_NEW2 [replicaRecv $replica(loc.$swap)]
}
if { $replica(index) > $replica(index.$swap) } {
replicaSend $POTENTIAL_NEW $replica(loc.$swap)
}
if { $replica(index) > $replica(index.$swap) } {
set POTENTIAL_NEW2 [replicaRecv $replica(loc.$swap)]
}
if { $replica(index) < $replica(index.$swap) } {
replicaSend $POTENTIAL_NEW $replica(loc.$swap)
}
if { $replica(index) < $replica(index.$swap) } {
set BOLTZMAN 0.001987191
set delta [expr ($POTENTIAL_NEW + $POTENTIAL_NEW2 - $POTENTIAL - $POTENTIAL2)/($BOLTZMAN * $temperature)]
set doswap [expr $delta < 0. || exp(-1. * $delta) > rand()]
replicaSend $doswap $replica(loc.$swap)
puts $history_file "$i_step $replica(index)<->$replica(index.$swap) $POTENTIAL $POTENTIAL2 $POTENTIAL_NEW $POTENTIAL_NEW2 $doswap"
# flush $history_file
if { $doswap } {
puts stderr "EXCHANGE_ACCEPT $replica(index) $replica(index.$swap) RUN $i_run"
incr replica(exchanges_accepted)
}
incr replica(exchanges_attempted)
}
if { $replica(index) > $replica(index.$swap) } {
set doswap [replicaRecv $replica(loc.$swap)]
puts $history_file "$i_step $replica(index)<->$replica(index.$swap) $POTENTIAL $POTENTIAL2 $POTENTIAL_NEW $POTENTIAL_NEW2 $doswap"
# flush $history_file
}
}
set newloc $r
if { $doswap } {
set newloc $replica(loc.$swap)
set replica(loc.$swap) $r
} else {
set replica(ParamID) $replica(index)
setup_parameters $replica(ParamID)
}
set replica(loc.$other) [replicaSendrecv $newloc $replica(loc.$other) $replica(loc.$other)]
if { $doswap } {
array set replica [replicaSendrecv [array get replica] $newloc $newloc]
}
# puts $history_file "Check state: id=$r ParaID= $replica(ParamID)"
# puts $history_file [array get replica]
# flush $history_file
incr i_run
if { $i_run % ($runs_per_frame * $frames_per_restart) == 0 ||
$i_run == $num_runs } { # restart
set restart_root "$job_output_root.restart$i_run"
output [format $restart_root.$replica_id $replica_id]
set rfile [open [format "$restart_root.$replica_id.tcl" $replica_id] "w"]
puts $rfile [list array set replica [array get replica]]
close $rfile
replicaBarrier
if { $replica_id == 0 } {
set rfile [open [format "$restart_root.tcl" ""] "w"]
puts $rfile [list set i_job [expr $i_job + 1]]
puts $rfile [list set i_run $i_run]
puts $rfile [list set i_step $i_step]
puts $rfile [list set restart_root $restart_root]
close $rfile
if [info exists old_restart_root] {
set oldroot [format $old_restart_root ""]
file delete $oldroot.tcl
}
}
replicaBarrier
if [info exists old_restart_root] {
set oldroot [format $old_restart_root $replica_id]
file delete $oldroot.$replica_id.tcl
file delete $oldroot.$replica_id.coor
file delete $oldroot.$replica_id.vel
file delete $oldroot.$replica_id.xsc
}
set old_restart_root $restart_root
}
}
set attempts $replica(exchanges_attempted)
if $attempts {
set i $replica(index)
if { $replica(index.a) > $i } {
set swap a
} else {
set swap b
}
set accepts $replica(exchanges_accepted)
set ratio [expr 1.0*$accepts/$attempts]
puts stderr "EXCHANGE_RATIO $replica(index) $replica(index.$swap) $accepts $attempts $ratio"
}
replicaBarrier

Просмотреть файл

@ -0,0 +1,69 @@
# configuration for FEP replica exchange
# Search "User_to_set" to see places you may need to change
# ====================================================================
# BEFORE running simulation,
# prepare your output directories:
# ../make_output_dirs.sh output_solv <NUMBER_OF_REPLICAS>
# ====================================================================
# TO RUN simulation:
# User_to_set: be consistent with the number of replicas and name of output directory
# mpiexec -n 36 $bindir/namd2 +replicas 36 fep_solv.conf --source FEP_wca.namd +stdout output_solv/%d/job0.%d.log
# mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 fold_alanin.conf --source ../replica.namd +stdout output/%d/job0.%d.log
# the number of MPI ranks (-np) must be a multiple of the number of replicas (+replicas)
#
# ====================================================================
# AFTER simulation:
# Post-process output with wham script:
# sh ./wham
# sh ./get_fe.sh
#
# Output file include:
# 1. repu_fe.dat <- repulsive energy
# 2. disp_wham_fe <- dispersive energy
# 3. chrg_wham_fe <- electrostatic energy
# view in VMD: source fold_alanin.conf; source ../show_replicas.vmd
# add continued: source restart_1.conf; source ../show_replicas.vmd
# show both: vmd -e load_all.vmd
# ====================================================================
#
# User_to_set: flag for using drude model or not; 1=yes, 0=no
set drude_model 0
# User_to_set: total number of replicas
set num_replicas 36
# User_to_set: number of replicas for repulsive interactions
set num_replicasa 12
# User_to_set: number of replicas for dispersive interactions
set num_replicasb 12
# User_to_set: number of replicas for charge interactions
set num_replicasc 12
# User_to_set: the temperature of simulations
set temperature 300.0
# User_to_set: the steps of simulations between two exchange attempts
set steps_per_run 100
# User_to_set: to control the total simulation time, which = steps_per_run * num_runs
set num_runs 500
# User_to_set: num_runs should be divisible by
# runs_per_frame * frames_per_restart
# Controls the frequency with which snapshots are saved in dcd file
set runs_per_frame 500
# User_to_set: to control the frequency with which restart files are output
set frames_per_restart 1
set namd_config_file "fep_solv_base.namd"
set output_root "output_solv/%s/fep" ; # directories must exist

Просмотреть файл

@ -0,0 +1,155 @@
# INPUT
coordinates solv_benz_namd.pdb
structure solv_benz_namd.psf
parameters par_all22_prot_cmap.inp
paraTypeCharmm on
# INITIAL CONDITIONS
# PME
PME yes
PMETolerance 10e-6
PMEInterpOrder 6
PMEGridSpacing 1.0
# Periodic Boundary Conditions
cellBasisVector1 23.0 0. 0.
cellBasisVector2 0. 23.0 0.
cellBasisVector3 0. 0 23.0
cellOrigin 0.0 0.0 0.0
wrapAll on
langevin on
langevinTemp 300.0
langevinDamping 1.0
LangevinPiston on
LangevinPistonTarget 1
LangevinPistonPeriod 100
LangevinPistonDecay 100
LangevinPistonTemp 300.0
StrainRate 0.0 0.0 0.0
useGroupPressure yes
useflexiblecell no
splitpatch hydrogen
hgroupcutoff 2.8
stepspercycle 10
margin 0.0
switching on
switchdist 12.0
cutoff 13.0
pairlistdist 14.0
exclude scaled1-4
1-4scaling 1.0
# RESPA PROPAGATOR
timestep 2.0
#fullElectFrequency 2
#nonbondedFreq 1
# SHAKE
rigidbonds water
# COM
commotion no
tclForces on
tclForcesScript {
global kforce
# Set constants
# To_change: be consistent with the number of atoms in the molecule perturbed
set natom 12
set kforce 10.0 ; # kcal/mol/AA Force constant for the restraint
# Output parameters
# set ofile "com_restr.out" ; # name of output file
# set freq 1000 ; # frequency for writing
set selecom {}
for {set i 1 } {$i <= $natom } {incr i 1} {
set id $i
lappend selecom $id
addatom $id
print $id
}
## group indices with addgroup
set grp [addgroup $selecom]
# Set reference value of com coordinates
set xc0 0.000
set yc0 0.000
set zc0 0.000
proc calcforces {} {
global grp xc0 yc0 zc0
global kforce
global freq fout ofile
loadcoords coords
# DO COM RESTRAINT
# get com coords
set rc $coords($grp)
set xc [lindex $rc 0]
set yc [lindex $rc 1]
set zc [lindex $rc 2]
# calculate forces on com
set diffx [expr {$xc0 - $xc}]
set diffy [expr {$yc0 - $yc}]
set diffz [expr {$zc0 - $zc}]
set f {}
set fx [expr {$kforce*$diffx}]
set fy [expr {$kforce*$diffy}]
set fz [expr {$kforce*$diffz}]
lappend f $fx $fy $fz
# distribute force proportionally to atoms
# in group grp (NAMD does this automatically)
addforce $grp $f
# add energy
addenergy [expr {0.5*$kforce*$diffx*$diffx}]
addenergy [expr {0.5*$kforce*$diffy*$diffy}]
addenergy [expr {0.5*$kforce*$diffz*$diffz}]
# Print out stuff
# set currstep [getstep]
# if {[expr {$currstep % $freq}] == 0} {
# set fout [open $ofile a+]
# puts $fout [format "%f %f %f %f %f %f %f" $currstep $xc0 $yc0 $zc0 $xc $yc $zc]
# close $fout
# }
return
}
}
# FEP PARAMETERS
alch on
alchType FEP
alchEnsembleAvg off
#EnsembleAverage off
alchFepWhamOn on
alchFile solv_benz.fep
alchCol B
alchOutFreq 1
alchDecouple on
alchEquilSteps 0

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,47 @@
FEP replica exchange instructions:
Search "User_to_set" to see places you may need to change
====================================================================
BEFORE RUNNING SIMULATION:
prepare your output directories:
../make_output_dirs.sh output_solv <NUMBER_OF_REPLICAS>
====================================================================
TO RUN SIMULATION:
User_to_set: be consistent with the number of replicas and name of output directory
mpiexec -n 36 $bindir/namd2 +replicas 36 fep_solv.conf --source FEP_wca.namd +stdout output_solv/%d/job0.%d.log
mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 fold_alanin.conf --source ../replica.namd +stdout output/%d/job0.%d.log
the number of MPI ranks (-np) must be a multiple of the number of replicas (+replicas)
====================================================================
AFTER SIMULATION:
Post-process output with wham script:
sh ./wham
sh ./get_fe.sh
Note: first time you post-process, the "post-processing" scripts
will attempt to automatically compile several small binaries
in the wham directory needed for analysis. This automatic compile
process therefore requires access to the GNU compiler,
g++, in your PATH.
i.e., on most Linux distros
for bash shell: export PATH=/usr/bin/g++:$PATH
for c-based shells: setenv PATH "/usr/bin/g++ $PATH"
Output files from post-processing includes:
1. repu_fe.dat <- repulsive energy
2. disp_wham_fe <- dispersive energy
3. chrg_wham_fe <- electrostatic energy
====================================================================

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,118 @@
// Code written by Lei Huang for wham post-process of FEP data in NAMD
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N_WIN (128)
int n_Win, nLine[MAX_N_WIN];
double rcut2[MAX_N_WIN];
inline int Get_Index_rcut(double rcut);
int main(int argc, char *argv[])
{
FILE *fIn, *fOut[MAX_N_WIN];
int ReadItem, i, Idx;
double fTmp=0.0, rCut_1, rCut_2, lambda, dE;
char szEType[256], szOutput[256], szLine[256], *ReadLine;
if(argc != 3) {
printf("Usage: rcut_2_list data_file\nThe output will be repu_*.wham.\n");
exit(1);
}
fIn = fopen(argv[1], "r");
if(fIn == NULL) {
printf("Fail to open file: %s\nQuit\n", argv[1]);
exit(1);
}
n_Win=0;
while(1) {
ReadItem = fscanf(fIn, "%lf", &(rcut2[n_Win]));
if(ReadItem == 1) {
nLine[n_Win] = 0;
n_Win++;
}
else {
break;
}
}
fclose(fIn);
fIn = fopen(argv[2], "r");
if(fIn == NULL) {
printf("Fail to open file: %s\nQuit\n", argv[2]);
exit(1);
}
for(i=0; i<n_Win; i++) {
sprintf(szOutput, "repu_%d.wham", i);
fOut[i] = fopen(szOutput, "w");
if(fOut[i] == NULL) {
printf("Fail to open file: %s for write.\nQuit\n", szOutput);
exit(1);
}
}
// d_Cut = rcut2[1]-rcut2[0];
// d_Cut_Inv = 1.0/d_Cut;
while(1) {
if(feof(fIn)) {
break;
}
ReadLine = fgets(szLine, 128, fIn);
if(ReadLine == NULL) {
break;
}
ReadItem = sscanf(szLine, "%s%lf%lf%lf%lf", szEType, &rCut_1, &rCut_2, &lambda, &dE);
if(ReadItem == 5) {
if(strcmp(szEType, "FEP_WCA_REP")==0) {
// Idx = (int)(rCut2*d_Cut_Inv + 0.1) - 1;
Idx = Get_Index_rcut(rCut_2);
if(Idx < 0) {
printf("Error: unrecognized rcut2 %lf\n", rCut_2);
}
else {
fprintf(fOut[Idx], "%.4lf %.4lf\n", lambda, dE);
nLine[Idx]++;
}
}
}
// else {
// break;
// }
}
fclose(fIn);
for(i=0; i<n_Win; i++) {
fclose(fOut[i]);
}
printf("Window rcut2 #_data\n");
for(i=0; i<n_Win; i++) {
printf(" %6d %6.4lf %7d\n", i+1, rcut2[i], nLine[i]);
}
return 0;
}
inline int Get_Index_rcut(double rcut)
{
for(int i=0; i<n_Win; i++) {
// if(fabs(rcut2[i]-rcut) < 2.0E-4) {
if(rcut2[i] == rcut) {
return i;
}
}
return -1;
}

Просмотреть файл

@ -0,0 +1,29 @@
# configuration for replica exchange scripts
# run simulation:
# mkdir output_solv
# (cd output_solv; mkdir 0 1 2 3 4 5 6 7)
# mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 fold_alanin.conf --source ../replica.namd +stdout output_solv/%d/job0.%d.log
# the number of MPI ranks (-np) must be a multiple of the number of replicas (+replicas)
# to continue:
# mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 restart_1.conf --source ../replica.namd +stdout output_solv/%d/job1.%d.log
# increase num_runs below if job completed, or use latest restartXXX.tcl file available
# be sure to increment jobX for +stdout option on command line
# view in VMD: source fold_alanin.conf; source ../show_replicas.vmd
# add continued: source restart_1.conf; source ../show_replicas.vmd
# show both: vmd -e load_all.vmd
set num_replicas 72
set num_replicasa 36
set num_replicasb 18
set num_replicasc 18
set TEMP 298.15
set steps_per_run 800000
set num_runs 1
# num_runs should be divisible by runs_per_frame * frames_per_restart
set runs_per_frame 1
set frames_per_restart 1
set namd_config_file "fep_solv_base.namd"
set output_root "output_solv/%s/fep" ; # directories must exist

Просмотреть файл

@ -0,0 +1,4 @@
#!/bin/bash
sh ./wham_data_solv.sh
sh ./wham_fe.sh
perl ./sum_fe.pl

Просмотреть файл

@ -0,0 +1,155 @@
// Code written by Lei Huang for wham post-process of FEP data in NAMD
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MIN_COL_1 (0.0)
#define MAX_COL_1 (1.0)
#define N_BIN (200)
#ifndef min(a,b)
#define min(a,b) ((a<b)?(a):(b))
#define max(a,b) ((a>b)?(a):(b))
#endif
#define MAX_LINE (10000000)
double *pcol_1, *pcol_2, BinSize;
int ID[N_BIN], BinCount[N_BIN], *pIDList;
int nData=0;
char szInput[512], szOutput[512];
int ReadData(int nLine);
void Assign_Bin_ID(void);
void Write_Sorted_Data(void);
int main(int argc, char *argv[])
{
if(argc<3) {
printf("Usage: sort-data you-data new-data #-lines\n");
exit(1);
}
else if(argc==3) {
nData = MAX_LINE;
}
else if(argc==4) {
nData = atoi(argv[3]);
}
strcpy(szInput, argv[1]);
strcpy(szOutput, argv[2]);
pcol_1 = new double[nData];
if(pcol_1 == NULL) {
printf("Fail to allocate memory for pcol_1 in sort-data-wham.\nQuit\n");
exit(1);
}
pcol_2 = new double[nData];
if(pcol_2 == NULL) {
printf("Fail to allocate memory for pcol_2 in sort-data-wham.\nQuit\n");
delete []pcol_1;
exit(1);
}
pIDList = new int[nData];
if(pIDList == NULL) {
printf("Fail to allocate memory for pIDList in sort-data-wham.\nQuit\n");
delete []pcol_1;
delete []pcol_2;
exit(1);
}
ReadData(nData);
Assign_Bin_ID();
Write_Sorted_Data();
delete []pcol_1;
delete []pcol_2;
delete []pIDList;
return 0;
}
int ReadData(int nLine)
{
FILE *fIn;
int nCount = 0, ReadItem;
double fTmp=0.0;
fIn = fopen(szInput, "r");
if(fIn == NULL) {
printf("Fail to open file %s for read.\nQuit\n", szInput);
exit(1);
}
while(1) {
ReadItem = fscanf(fIn, "%lf %lf", &(pcol_1[nCount]), &(pcol_2[nCount]));
if(ReadItem == 2) {
nCount++;
if(nCount >= nData) {
break;
}
}
else {
break;
}
}
fclose(fIn);
nData = nCount;
return nCount;
}
void Assign_Bin_ID(void)
{
int i, Idx, MaxID;
double BinSize_Inv;
MaxID = N_BIN - 1;
BinSize = (MAX_COL_1-MIN_COL_1)/N_BIN;
BinSize_Inv = 1.0/BinSize;
memset(BinCount, 0, sizeof(int)*N_BIN);
for(i=0; i<nData; i++) {
Idx = int((pcol_1[i] - MIN_COL_1)*BinSize_Inv);
Idx = min(MaxID, max(0, Idx));
pIDList[i] = Idx;
BinCount[Idx] ++;
}
}
void Write_Sorted_Data(void)
{
FILE *fOut;
int ID, i;
fOut = fopen(szOutput, "w");
if(fOut == NULL) {
printf("Fail to open file %s for read.\nQuit\n", szOutput);
exit(1);
}
for(ID=0; ID<N_BIN; ID++) {
if(BinCount[ID] > 0) {
for(i=0; i<nData; i++) {
if(pIDList[i] == ID) {
fprintf(fOut, "%8.5lf %12.5lf\n", pcol_1[i], pcol_2[i]);
}
}
}
}
fclose(fOut);
}

Просмотреть файл

@ -0,0 +1,47 @@
#!/usr/bin/perl -w
open(FE_REPU_TIME, ">solv_repu_fe.dat") or die "Can't open file lyz_repu_fe.dat: $!";
open(FE_BINDING_TIME, ">solv_total_fe.dat") or die "Can't open file lyz_binding_fe.dat: $!";
my @allrepufe = <repu_*_wham_fe>;
my $sum_fe = 0;
open(FE_CHG, "<chg_wham_fe") or die "Can't open file : $!";
NEXT: while ($line = <FE_CHG>) {
chomp $line;
if (!$line) {next NEXT;}
my @fields = split /\s+/, $line;
my $time = $fields[1];
my $chg_fe = $fields[2];
$sum_fe += $chg_fe;
}
close FE_CHG;
open(FE_DISP, "<disp_wham_fe") or die "Can't open file : $!";
NEXT: while ($line = <FE_DISP>) {
chomp $line;
if (!$line) {next NEXT;}
my @fields = split /\s+/, $line;
my $time = $fields[1];
my $disp_fe = $fields[2];
$sum_fe += $disp_fe;
}
close FE_DISP;
my $total_repu_fe = 0;
nextmol: foreach $i (@allrepufe) {
open(FE_REPU, "<${i}") or die "Can't open file ${i}: $!";
NEXT: while ($line = <FE_REPU>) {
chomp $line;
if (!$line) {next NEXT;}
my @fields = split /\s+/, $line;
my $time = $fields[1];
my $repu_fe = $fields[2];
$total_repu_fe += $repu_fe;
$sum_fe += $repu_fe;
}
close FE_REPU;
}
printf FE_REPU_TIME "%-10.5f\n", $total_repu_fe;
printf FE_BINDING_TIME "%-10.5f\n", $sum_fe;
close FE_REPU_TIME;

Просмотреть файл

@ -0,0 +1,439 @@
// Code written by Lei Huang for wham post-process of FEP data in NAMD
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define KBOLTZ (1.987191E-03)
#define NCYCLE (100000)
//#define TOL (1.0E-7)
#define TOL (1.0E-6)
#define max_data (1000000)
#define max_wind (20)
#define CHECK_POINTER(p) {if((p)==NULL) {printf("Invalid pointer.\nQuit\n"); exit(1);}}
int *NPoints;
double **epprtd;
double *lambda;
double *F;
double *F2;
int nb_wind;
double kbt;
char szData[256];
char szFile_FE[256];
// max_data - max number of data points
// max_wind - max number of windows
void wham_FEP(void);
void wham(void);
void wham_E_Histogram(void);
double** Allocate_Mem_2D_Array(int Ny, int Nx);
void Deallocate_Mem_2D_Array(double **p, int Ny, int Nx);
int** Allocate_Mem_2D_Array_Int(int Ny, int Nx);
void Deallocate_Mem_2D_Array_Int(int **p, int Ny, int Nx);
void Free_Memory(void);
int main(int argc, char *argv[])
{
if(argc <3) {
printf("Usage: wham_fep data_file output_wham_file\n");
exit(1);
}
strcpy(szData, argv[1]);
strcpy(szFile_FE, argv[2]);
printf("----------------------------------\n");
printf("Weigthed Histogram Analysis Method\n");
printf("Author: Benoit Roux (1995).\n");
printf("Ported to c by Lei Huang (2012).\n\n");
NPoints = new int[max_wind];
epprtd = Allocate_Mem_2D_Array(max_wind, max_data);
lambda = new double[max_wind];
F = new double[max_wind];
F2 = new double[max_wind];
wham_FEP();
Free_Memory();
return 0;
}
// call WHAM1(maxwind, maxtime, nb_wind, Ntime, epprtd, &
// Lambda, F, F2)
void wham_FEP(void)
{
int i, Time_1, Time_2, Time_3;
double Temp, lambx, eppx;
int Ntot1, Ntot2, ReadItem;
int ioffset=0; // the window used as the reference
FILE *fIn, *fOut;
Ntot1 = Ntot2 = 0;
Temp = 300.0;
kbt=KBOLTZ*Temp;
nb_wind = 0;
NPoints[0] = 0;
lambda[0] = 0.0;
fIn = fopen(szData, "r");
if(fIn == NULL) {
printf("Fail to open file: %s\nQuit\n", szData);
Free_Memory();
exit(1);
}
while(1) {
ReadItem = fscanf(fIn, "%lf%lf", &lambx, &eppx);
if(ReadItem != 2) {
break;
}
if( lambx != lambda[nb_wind] ) {
nb_wind++;
if(nb_wind > max_wind) {
printf("Number of windows exceeds limit.\nQuit\n");
exit(1);
}
NPoints[nb_wind] = 0;
if(Ntot1 > Ntot2) Ntot2=Ntot1;
Ntot1 = 0;
lambda[nb_wind] = lambx;
}
Ntot1 ++;
if(NPoints[nb_wind] < max_data) {
epprtd[nb_wind][NPoints[nb_wind]] = eppx;
NPoints[nb_wind] = NPoints[nb_wind] + 1;
}
}
fclose(fIn);
if(Ntot2 > max_data) {
printf("Some data points have been left out.\n");
}
else {
printf("All data points have been read.\n");
}
printf("Window #_of_Data Lambda\n");
for(i=0; i<=nb_wind; i++) {
printf("%6d %10d %.5lf\n", i+1, NPoints[i], lambda[i]);
F[i] = 0.0;
F2[i] = 0.0;
}
// Time_1 = time(NULL);
// wham(); // the original wham by Benoit Roux
// Time_2 = time(NULL);
// printf("Ellapsed time %d seconds in wham().\n", Time_2-Time_1);
// printf("\n\nWindow #_of_Data Lambda F\n");
// for(i=0; i<=nb_wind; i++) {
// printf(" %-d %10d %.5lf %.5lf\n", i+1, NPoints[i], lambda[i], F2[i]-F2[ioffset]);
// }
Time_2 = time(NULL);
wham_E_Histogram(); // loop over the histogram
Time_3 = time(NULL);
printf("\nEllapsed time %d seconds in wham().\n", Time_3-Time_2);
printf("\n\nWindow #_of_Data Lambda F\n");
for(i=0; i<=nb_wind; i++) {
printf(" %4d %10d %.5lf %.5lf\n", i+1, NPoints[i], lambda[i], F2[i]-F2[ioffset]);
}
fOut = fopen(szFile_FE, "w");
fprintf(fOut, " 100 %.5lf\n", F2[nb_wind]-F2[0]);
fclose(fOut);
}
void wham(void)
{
int i, j, k, t, Converged=0, icycle;
double arg1, arg2, argmax=0.0, Bot_i, Top_i, diff, *pDataTmp, kbt_Inv;
kbt_Inv = 1.0/kbt;
pDataTmp = new double[nb_wind+1];
for(icycle=1; icycle<=NCYCLE; icycle++) {
for(k=0; k<=nb_wind; k++) {
F[k]=0.0;
for(i=0; i<=nb_wind; i++) {
for(t=0; t<NPoints[i]; t++) {
arg1 = (-lambda[k]*epprtd[i][t])*kbt_Inv;
argmax = arg1;
for(j=0; j<=nb_wind; j++) {
arg2 = (F2[j]-lambda[j]*epprtd[i][t])*kbt_Inv;
if(arg2 > argmax) argmax = arg2;
pDataTmp[j] = arg2;
}
Top_i = exp(arg1-argmax);
Bot_i = 0.0;
for(j=0; j<=nb_wind; j++) {
arg2 = pDataTmp[j]-argmax;
Bot_i = Bot_i + NPoints[j] * exp(arg2);
}
F[k] = F[k] + Top_i / Bot_i;
}
}
}
Converged = 1;
for(k=0; k<=nb_wind; k++) {
F[k] = -kbt*log( F[k] );
// printf("window %d: F(k) = %.5lf\n", k+1, F[k]);
diff = fabs( F2[k] - F[k] );
F2[k] = F[k] - F[0];
if(diff > TOL) Converged = 0;
}
if(Converged) {
printf("\nConverged at step: %d\n", icycle);
delete []pDataTmp;
return;
}
}
printf("\nFail to converge in %d steps.\n", NCYCLE);
delete []pDataTmp;
}
#define E_BIN_SIZE (0.0004)
//#define E_BIN_SIZE (0.0001)
void wham_E_Histogram(void)
{
int i, j, k, t, Converged=0, icycle, Idx;
double arg1, arg2, argmax=0.0, Bot_i, Top_i, diff, *pDataTmp, kbt_Inv, E_Local;
double *pEmin=NULL, *pEmax=NULL, **pE_Hist=NULL;
int *pN_Bin=NULL, **nHist_E=NULL;
//start to build the histogram of E for each window and free the memory for all data points, epprtd[][]
pEmin = new double[nb_wind+1];
CHECK_POINTER(pEmin)
pEmax = new double[nb_wind+1];
CHECK_POINTER(pEmax)
pN_Bin = new int[nb_wind+1];
CHECK_POINTER(pN_Bin)
nHist_E = new int*[nb_wind+1];
CHECK_POINTER(nHist_E)
pE_Hist = new double*[nb_wind+1];
CHECK_POINTER(pE_Hist)
for(i=0; i<=nb_wind; i++) {
pEmin[i] = 1.0E100;
pEmax[i] = -1.0E100;
for(j=0; j<NPoints[i]; j++) {
if(epprtd[i][j] > pEmax[i]) {
pEmax[i] = epprtd[i][j];
}
if(epprtd[i][j] < pEmin[i]) {
pEmin[i] = epprtd[i][j];
}
}
pN_Bin[i] = (int)((pEmax[i]-pEmin[i])/E_BIN_SIZE)+1;
nHist_E[i] = new int[pN_Bin[i]];
CHECK_POINTER(nHist_E[i])
pE_Hist[i] = new double[pN_Bin[i]];
CHECK_POINTER(pE_Hist[i])
memset(nHist_E[i], 0, sizeof(int)*pN_Bin[i]);
for(j=0; j<pN_Bin[i]; j++) { // assign the list of energies histogram
pE_Hist[i][j] = pEmin[i] + j*E_BIN_SIZE;
}
for(j=0; j<NPoints[i]; j++) {
Idx = (int)((epprtd[i][j] - pEmin[i])/E_BIN_SIZE);
nHist_E[i][Idx]++;
}
}
Deallocate_Mem_2D_Array(epprtd, max_wind, max_data);
epprtd = NULL;
//end to build the histogram of E for each window and free the memory for all data points, epprtd[][]
kbt_Inv = 1.0/kbt;
pDataTmp = new double[nb_wind+1];
for(icycle=1; icycle<=NCYCLE; icycle++) {
for(k=0; k<=nb_wind; k++) {
F[k]=0.0;
for(i=0; i<=nb_wind; i++) {
for(t=0; t<pN_Bin[i]; t++) {
if(nHist_E[i][t] == 0) {
continue;
}
E_Local = pE_Hist[i][t];
arg1 = (-lambda[k]*E_Local)*kbt_Inv;
argmax = arg1;
for(j=0; j<=nb_wind; j++) {
arg2 = (F2[j]-lambda[j]*E_Local)*kbt_Inv;
if(arg2 > argmax) argmax = arg2;
pDataTmp[j] = arg2;
}
Top_i = exp(arg1-argmax) * nHist_E[i][t];
Bot_i = 0.0;
for(j=0; j<=nb_wind; j++) {
arg2 = pDataTmp[j]-argmax;
Bot_i = Bot_i + NPoints[j] * exp(arg2);
}
F[k] = F[k] + Top_i / Bot_i;
}
}
}
Converged = 1;
for(k=0; k<=nb_wind; k++) {
F[k] = -kbt*log( F[k] );
// printf("window %d: F(k) = %.5lf\n", k+1, F[k]);
diff = fabs( F2[k] - F[k] );
F2[k] = F[k] - F[0];
if(diff > TOL) Converged = 0;
}
if(Converged) {
printf("\nConverged at step: %d\n", icycle);
delete []pDataTmp;
for(i=0; i<=nb_wind; i++) {
delete [](nHist_E[i]);
delete [](pE_Hist[i]);
}
delete []nHist_E;
delete []pE_Hist;
delete []pEmin;
delete []pEmax;
delete []pN_Bin;
return;
}
}
printf("\nFail to converge in %d steps.\n", NCYCLE);
delete []pDataTmp;
for(i=0; i<=nb_wind; i++) {
delete [](nHist_E[i]);
delete [](pE_Hist[i]);
}
delete []nHist_E;
delete []pE_Hist;
delete []pEmin;
delete []pEmax;
delete []pN_Bin;
return;
}
#undef E_BIN_SIZE
double** Allocate_Mem_2D_Array(int Ny, int Nx)
{
double **p;
int i;
p = new double*[Ny];
if(p == NULL) {
printf("Fail to allocate memory in Allocate_Mem_2D_Array().\nQuit\n");
exit(1);
}
for(i=0; i<Ny; i++) {
p[i] = new double[Nx];
if(p[i] == NULL) {
printf("Fail to allocate memory in Allocate_Mem_2D_Array().\nQuit\n");
exit(1);
}
}
return p;
}
void Deallocate_Mem_2D_Array(double **p, int Ny, int Nx)
{
int i;
for(i=0; i<Ny; i++) {
delete [](p[i]);
}
delete []p;
p=NULL;
}
int** Allocate_Mem_2D_Array_Int(int Ny, int Nx)
{
int **p;
int i;
p = new int*[Ny];
if(p == NULL) {
printf("Fail to allocate memory in Allocate_Mem_2D_Array_Int().\nQuit\n");
exit(1);
}
for(i=0; i<Ny; i++) {
p[i] = new int[Nx];
if(p[i] == NULL) {
printf("Fail to allocate memory in Allocate_Mem_2D_Array_Int().\nQuit\n");
exit(1);
}
}
return p;
}
void Deallocate_Mem_2D_Array_Int(int **p, int Ny, int Nx)
{
int i;
for(i=0; i<Ny; i++) {
delete [](p[i]);
}
delete []p;
p=NULL;
}
void Free_Memory(void)
{
if(epprtd) {
Deallocate_Mem_2D_Array(epprtd, max_wind, max_data);
}
if(NPoints) delete []NPoints;
if(lambda) delete []lambda;
if(F) delete []F;
if(F2) delete []F2;
}

Просмотреть файл

@ -0,0 +1,23 @@
# To_change: The number of lines of date you will use
nLineUse=200000
echo "" > all-dat.tmp
tail -n $nLineUse ../output_solv/*/*.fepout >> all-dat.tmp
sed 's/ BREAK /\n/g' all-dat.tmp > org-dat.tmp
mv org-dat.tmp all-dat.tmp
head -n 1 ../output_solv/*/*.fepout | grep "^FEP_WCA_REP" | awk '{print $3}' | sort | uniq > all-cut2.list
grep "^FEP_ELEC" all-dat.tmp | awk '{print $2 " " $3}' > chg.wham
grep "^FEP_WCA_DISP" all-dat.tmp | awk '{print $2 " " $3}' > disp.wham
if [ ! -e "./extract_repul" ]; then
g++ -O2 -o extract_repul extract-repul.cpp
fi
./extract_repul all-cut2.list all-dat.tmp
rm all-dat.tmp

Просмотреть файл

@ -0,0 +1,25 @@
num_repu=`ls -l repu_*.wham | wc -l`
if [ ! -e "./sort-data-wham" ]; then
g++ -O2 -o sort-data-wham sort-data-fe.cpp
fi
if [ ! -e "./wham_fep" ]; then
g++ -O2 -o wham_fep wham-fep.cpp
fi
for (( i=0; i<$num_repu; i++ ))
do
nline=`wc -l repu_$i.wham | awk '{print $1}'`
./sort-data-wham repu_$i.wham repu_$i.wham $nline
./wham_fep repu_$i.wham repu_${i}_wham_fe > log-repu-$i.txt
done
nline=`wc -l chg.wham | awk '{print $1}'`
./sort-data-wham chg.wham chg.wham $nline
./wham_fep chg.wham chg_wham_fe > log-chg.txt
nline=`wc -l disp.wham | awk '{print $1}'`
./sort-data-wham disp.wham disp.wham $nline
./wham_fep disp.wham disp_wham_fe > log-disp.txt

Просмотреть файл

@ -0,0 +1,63 @@
This directory contains Tcl scripts that implement replica exchange.
This replaces the old Tcl server and socket connections driving a
separate NAMD process for every replica used in the simulation.
*** NET, IBVERBS, AND MULTICORE BUILDS ARE CURRENTLY NOT SUPPORTED. ***
Charm++ 6.5.0 or newer for mpi, gemini_gni, pamilrts, or other
machine layers based on the lrts low-level runtime implementation
are required for replica functionality based on Charm++ partitions.
A patched version of Charm++ is no longer required.
Replica exchanges and energies are recorded in the .history files
written in the output directories. These can be viewed with, e.g.,
"xmgrace output/*/*.history" and processed via awk or other tools.
There is also a script to load the output into VMD and color each
frame according to replica index. An example simulation folds
a 66-atom model of a deca-alanine helix in about 10 ns.
replica.namd - master script for replica exchange simulations
to run: mkdir output
(cd output; mkdir 0 1 2 3 4 5 6 7)
mpirun namd2 +replicas 8 job0.conf +stdout output/%d/job0.%d.log
mpirun namd2 +replicas 8 job1.conf +stdout output/%d/job1.%d.log
The number of MPI ranks must be a multiple of the number of replicas
(+replicas). Be sure to increment jobX for +stdout option on command line.
replica_util.namd - functions for reduction, broadcast, and timing,
useful for user-developed scripts and performance analysis
show_replicas.vmd - script for loading replicas into VMD, first source
the replica exchange conf file and then this script, repeat for
restart conf file or for example just do vmd -e load_all.vmd
clone_reps.vmd - provides "clone_reps" commmand to copy graphical
representation from top molecule to all others
sortreplicas - found in namd2 binary directory, program to un-shuffle
replica trajectories to place same-temperature frames in the same file.
Usage: "sortreplicas <job_output_root> <num_replicas> <runs_per_frame> [final_step]"
where <job_output_root> the job specific output base path, including
%s or %d for separate directories as in output/%s/fold_alanin.job1
Will be extended with .%d.dcd .%d.history for input files and
.%d.sort.dcd .%d.sort.history for output files. The optional final_step
parameter will truncate all output files after the specified step,
which is useful in dealing with restarts from runs that did not complete.
Colvars trajectory files are similarly processed if they are found.
example subdirectory:
alanin_base.namd - basic config options for NAMD
alanin.params - parameters
alanin.psf - structure
unfolded.pdb - initial coordinates
alanin.pdb - folded structure for fitting in show_replicas.vmd
fold_alanin.conf - config file for replica_exchange.tcl script
job0.conf - config file to start alanin folding for 10 ns
job1.conf - config file to continue alanin folding another 10 ns
load_all.vmd - load all output into VMD and color by replica index

Просмотреть файл

@ -0,0 +1,51 @@
#
# Save all representations and their complete settings
#
# XXX this code is not saving the state of the 6
# per-rep user-defined clipping planes yet.
proc clone_reps {} {
set srcmol [molinfo top]
foreach mol [molinfo list] {
if {$mol == $srcmol} continue
#delete current representations
set numreps [molinfo $mol get numreps]
for {set i 0} {$i < $numreps} {incr i} {
mol delrep 0 $mol
}
}
for {set i 0} {$i < [molinfo $srcmol get numreps]} {incr i} {
set rep [molinfo $srcmol get "{rep $i} {selection $i} {color $i} {material $i}"]
lappend rep [mol showperiodic $srcmol $i]
lappend rep [mol numperiodic $srcmol $i]
lappend rep [mol showrep $srcmol $i]
lappend rep [mol selupdate $i $srcmol]
lappend rep [mol colupdate $i $srcmol]
lappend rep [mol scaleminmax $srcmol $i]
lappend rep [mol smoothrep $srcmol $i]
lappend rep [mol drawframes $srcmol $i]
foreach mol [molinfo list] {
if {$mol == $srcmol} continue
foreach {r s c m pbc numpbc on selupd colupd colminmax smooth framespec} $rep { break }
eval "mol representation $r"
eval "mol color $c"
eval "mol selection {$s}"
eval "mol material $m"
eval "mol addrep $mol"
if {[string length $pbc]} {
eval "mol showperiodic $mol $i $pbc"
eval "mol numperiodic $mol $i $numpbc"
}
eval "mol selupdate $i $mol $selupd"
eval "mol colupdate $i $mol $colupd"
eval "mol scaleminmax $mol $i $colminmax"
eval "mol smoothrep $mol $i $smooth"
eval "mol drawframes $mol $i {$framespec}"
if { !$on } {
eval "mol showrep $mol $i 0"
}
}
}
}

Просмотреть файл

@ -0,0 +1,402 @@
remark - parameter file PARAM19 -
remark PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
remark TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
remark JORGENSEN NONBOND PARAMETERS JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
set echo=false end
!! - PEPTIDE GEOMETRY TO GIVE RAMACHANDRAN ET AL BBA 359:298 (1974)
!! - PEPTIDE TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
!! - NONBONDED TERMS JORGENSEN JACS 103:3976 W/ RC1-4 = 1.80 EC1-4 = 0.1
!! The default h-bond exponents are now 6-repul 4-attr
!! ++++++++ ATOMTYPE OS (IN METHYL ESTER) ADDED FOR CHARMM COURSE /LN ++++
!! Switched from Slater-Kirkwood to simple mixing rules - AB
!! Hbond parameters based on comparisons of dimer results with
!! ab initio calculations. - WER 12/19/84
!! Grouping of atom types for VDW parameters - BRB 1/3/85
bond C C 450.0 1.38! B. R. GELIN THESIS AMIDE AND DIPEPTIDES
bond C CH1E 405.0 1.52! EXCEPT WHERE NOTED. CH1E,CH2E,CH3E, AND CT
bond C CH2E 405.0 1.52! ALL TREATED THE SAME. UREY BRADLEY TERMS ADDED
bond C CH3E 405.0 1.52
bond C CR1E 450.0 1.38
bond C CT 405.0 1.53
bond C N 471.0 1.33
bond C NC2 400.0 1.33! BOND LENGTH FROM PARMFIX9 FORCE K APROXIMATE
bond C NH1 471.0 1.33
bond C NH2 471.0 1.33
bond C NP 471.0 1.33
bond C NR 471.0 1.33
bond C O 580.0 1.23
bond C OC 580.0 1.23! FORCE DECREASE AND LENGTH INCREASE FROM C O
bond C OH1 450.0 1.38! FROM PARMFIX9 (NO VALUE IN GELIN THESIS)
bond C OS 292.0 1.43! FROM DEP NORMAL MODE FIT
bond CH1E CH1E 225.0 1.53
bond CH1E CH2E 225.0 1.52
bond CH1E CH3E 225.0 1.52
bond CH1E N 422.0 1.45
bond CH1E NH1 422.0 1.45
bond CH1E NH2 422.0 1.45
bond CH1E NH3 422.0 1.45
bond CH1E OH1 400.0 1.42! FROM PARMFIX9 (NO VALUE IN GELIN THESIS)
bond CH2E CH2E 225.0 1.52
bond CH2E CH3E 225.0 1.54
bond CH2E CR1E 250.0 1.45! FROM WARSHEL AND KARPLUS 1972 JACS 96:5612
bond CH2E N 422.0 1.45
bond CH2E NH1 422.0 1.45
bond CH2E NH2 422.0 1.45
bond CH2E NH3 422.0 1.45
bond CH2E OH1 400.0 1.42
bond CH2E S 450.0 1.81! FROM PARMFIX9
bond CH2E SH1E 450.0 1.81
bond CH3E NH1 422.0 1.49
bond CH3E NR 422.0 1.49 ! FOR NETROPSIN
bond CH3E S 450.0 1.77! FROM PARMFIX9
bond CH3E OS 292.0 1.38! FROM DEP NORMAL MODE FIT
bond CM OM 1115.0 1.128! FROM CAUGHEY ET AL(1978),CARBON MONOXIDE
bond CR1E CR1E 450.0 1.38
bond CR1E NH1 450.0 1.305
bond CR1E NR 450.0 1.305
bond CT CT 200.0 1.53
bond CT N 422.0 1.45
bond CT NC2 422.0 1.45
bond CT NH1 422.0 1.45
bond CT NH2 422.0 1.45
bond CT NH3 422.0 1.45
bond CT OH1 400.0 1.42
bond CT S 450.0 1.81
!bond FE CM 258.0 1.79! FROM KROEKER ET AL(JCP:72:4846)
!bond FE NP 500.0 2.09
!bond FE NR 65.0 1.98! FROM NAGAI ET AL(1980)
!bond FE OM 250.0 1.8! JUST A GUESS.
bond H NH1 405.0 0.98! GELIN AND IR STRETCH 3200 CM 1
bond H NH2 405.0 0.98
bond H OH1 450.0 0.96! FROM IR STRETCH 3400 CM 1
bond HA C 350.0 1.08
bond HA CT 300.0 1.08
bond HC NC2 405.0 1.00
bond HC NH1 405.0 0.98
bond HC NH3 405.0 1.04
bond OC S 400.0 1.43
bond OM OM 600.0 1.23! STRETCHING CONSTANT JUST A GUESS.
bond S S 500.0 2.02
angle C C C 70.0 106.5! FROM B. R. GELIN THESIS WITH HARMONIC
angle C C CH2E 65.0 126.5! PART OF F TERMS INCORPORATED. ATOMS
angle C C CH3E 65.0 126.5! WITH EXTENDED H COMPENSATED FOR LACK
angle C C CR1E 70.0 122.5! OF H ANGLES.
angle C C CT 70.0 126.5
angle C C HA 40.0 120.0! AMIDE PARAMETERS FIT BY LEAST SQUARES
angle C C NH1 65.0 109.0! TO N-METHYL ACETAMIDE VIBRATIONS.
angle C C NP 65.0 112.5! MINIMIZATION OF N-METHYL ACETAMIDE.
angle C C NR 65.0 112.5
angle C C OH1 65.0 119.0
angle C C O 65.0 119.0 ! FOR NETROPSIN
angle CH1E C N 20.0 117.5
angle CH1E C NH1 20.0 117.5
angle CH1E C O 85.0 121.5
angle CH1E C OC 85.0 117.5
angle CH1E C OH1 85.0 120.0
angle CH2E C CR1E 70.0 121.5
angle CH2E C N 20.0 117.5
angle CH2E C NH1 20.0 117.5
angle CH2E C NH2 20.0 117.5
angle CH2E C NC2 20.0 117.5 ! FOR NETROPSIN
angle CH2E C NR 60.0 116.0
angle CH2E C O 85.0 121.6
angle CH2E C OC 85.0 118.5
angle CH2E C OH1 85.0 120.0
angle CH3E C N 20.0 117.5
angle CH3E C NH1 20.0 117.5
angle CH3E C O 85.0 121.5
angle CR1E C CR1E 65.0 120.5
angle CR1E C NH1 65.0 110.5! USED ONLY IN HIS, NOT IT TRP
angle CR1E C NP 65.0 122.5
angle CR1E C NR 65.0 122.5
angle CR1E C OH1 65.0 119.0
angle CT C N 20.0 117.5
angle CT C NH1 20.0 117.5
angle CT C NH2 20.0 117.5
angle CT C O 85.0 121.5
angle CT C OC 85.0 118.5
angle CT C OH1 85.0 120.0
angle HA C NH1 40.0 120.0
angle HA C NH2 40.0 120.0
angle HA C NR 40.0 120.0
angle HA C O 85.0 121.5
angle N C O 85.0 121.0
angle NC2 C NC2 70.0 120.0
angle NC2 C NH1 70.0 120.0
angle NH1 C NR 70.0 120.0
angle NH1 C O 65.0 121.0
angle NH2 C O 65.0 121.0
angle O C OH1 85.0 120.0
angle OC C OC 85.0 122.5
angle OS C CH1E 70.0 125.3! FROM PARDNA10
angle OS C CH2E 70.0 125.3! - " -
angle OS C O 70.0 120.0! - " -
angle C CH1E CH1E 70.0 110.0
angle C CH1E CH2E 70.0 109.5
angle C CH1E CH3E 70.0 106.5
angle C CH1E N 45.0 111.6
angle C CH1E NH1 45.0 111.6
angle C CH1E NH2 45.0 111.6
angle C CH1E NH3 45.0 111.6
angle CH1E CH1E CH2E 45.0 112.5
angle CH1E CH1E CH3E 45.0 111.0
angle CH1E CH1E NH1 50.0 110.0
angle CH1E CH1E NH2 50.0 109.5
angle CH1E CH1E NH3 50.0 107.5
angle CH1E CH1E OH1 50.0 104.5
angle CH2E CH1E CH3E 50.0 111.5
angle CH2E CH1E N 65.0 104.0
angle CH2E CH1E NH1 65.0 110.0
angle CH2E CH1E NH2 65.0 110.0
angle CH2E CH1E NH3 65.0 110.0
angle CH3E CH1E CH3E 50.0 111.0
angle CH3E CH1E NH1 65.0 108.5
angle CH3E CH1E NH2 65.0 109.5
angle CH3E CH1E NH3 65.0 109.5
angle CH3E CH1E OH1 60.0 110.5
angle C CH2E CH1E 70.0 112.5
angle C CH2E CH2E 70.0 113.0
angle C CH2E NH1 70.0 111.6
angle C CH2E NH2 70.0 111.6
angle C CH2E NH3 70.0 111.6
angle CH1E CH2E CH1E 45.0 117.0
angle CH1E CH2E CH2E 45.0 112.5
angle CH1E CH2E CH3E 45.0 113.0
angle CH1E CH2E OH1 45.0 111.0
angle CH3E CH2E OH1 45.0 111.0
angle CH1E CH2E S 50.0 112.5
angle CH1E CH2E SH1E 50.0 112.5
angle CH2E CH2E CH2E 45.0 110.0
angle CH2E CH2E CH3E 45.0 111.0
angle CH2E CH2E N 65.0 105.0
angle CH2E CH2E NH1 65.0 111.0
angle CH2E CH2E NH2 65.0 109.5
angle CH2E CH2E NH3 65.0 110.5
angle CH2E CH2E S 50.0 112.5
angle C CR1E C 90.0 126.5
angle C CR1E CH2E 90.0 122.0
angle C CR1E CR1E 90.0 119.0
angle C CR1E NH1 90.0 109.5
angle C CR1E NR 90.0 106.5
angle CR1E CR1E CR1E 90.0 120.5
angle NH1 CR1E NH1 70.0 109.0
angle NH1 CR1E NR 70.0 109.0
angle C CT CT 70.0 109.5
angle C CT HA 70.0 109.5
angle C CT N 70.0 111.6
angle C CT NH1 70.0 111.6
angle C CT NH2 70.0 111.6
angle C CT NH3 70.0 111.6
angle CT CT CT 45.0 111.00
angle CT CT HA 40.0 109.50
angle CT CT N 65.0 105.00
angle CT CT NC2 65.0 110.00
angle CT CT NH1 65.0 110.00
angle CT CT NH2 65.0 110.00
angle CT CT NH3 65.0 110.00
angle CT CT OH1 50.0 109.50
angle CT CT S 50.0 112.50
angle HA CT HA 40.0 109.5
angle HA CT N 50.0 109.5
angle HA CT NC2 50.0 109.5
angle HA CT NH1 50.0 109.5
angle HA CT NH3 50.0 109.5
angle HA CT OH1 50.0 109.5
angle HA CT S 40.0 109.5
!angle FE CM OM 5.0 90.0! FROM KROEKER ET AL(1980)
angle C N CH1E 80.0 120.0
angle C N CH2E 80.0 120.0
angle C N CT 80.0 120.0
angle CH1E N CH2E 60.0 110.0
angle CH1E N CH3E 60.0 110.0
angle CH2E N CH3E 60.0 109.5
angle CT N CT 60.0 110.0
angle C NC2 CT 80.0 120.0
angle C NC2 HC 35.0 120.0
angle CT NC2 HC 35.0 120.0
angle HC NC2 HC 40.0 120.0
angle C NH1 C 60.0 102.5 ! UNUSED (AND PROBABLY WRONG)
angle C NH1 CH1E 77.5 120.0
angle C NH1 CH2E 77.5 120.0
angle C NH1 CH3E 77.5 120.0
angle C NH1 CR1E 60.0 108.0
angle C NH1 CT 80.0 120.0
angle C NH1 H 30.0 120.0
angle CH1E NH1 CH3E 60.0 120.0
angle CH1E NH1 H 35.0 120.0
angle CH2E NH1 CH3E 60.0 120.0
angle CH2E NH1 H 35.0 120.0
angle CH3E NH1 H 35.0 120.0
angle CR1E NH1 CR1E 65.0 110.0
angle CR1E NH1 H 35.0 120.0
angle CT NH1 H 35.0 120.0
angle C NH2 H 30.0 120.0
angle CH1E NH2 CH2E 60.0 120.0
angle CH1E NH2 H 35.0 120.0
angle CH2E NH2 H 35.0 120.0
angle CT NH2 H 35.0 120.0
angle H NH2 H 40.0 125.0
angle C NP C 70.0 102.5
!angle C NP FE 50.0 128.0! FORCE CONSTANT FROM PARMFIX9
angle C NR C 70.0 102.5
angle C NR CR1E 70.0 109.5
angle CH3E NR CR1E 70.0 109.5 ! FOR NETROPSIN
angle CH3E NR C 70.0 109.5 ! FOR NETROPSIN
angle CR1E NR CR1E 65.0 110.0
!angle CR1E NR FE 30.0 124.8! FORCE CONSTANT FROM PARMFIX9
angle CH1E NH3 HC 35.0 109.5
angle CH1E NH3 CH2E 35.0 109.5
angle CH2E NH3 HC 35.0 109.5
angle CT NH3 HC 35.0 109.5
angle HC NH3 HC 40.0 109.5
angle C OH1 H 50.0 109.5
angle CH1E OH1 H 35.0 109.5
angle CH2E OH1 H 35.0 109.5
angle CT OH1 H 35.0 109.5
!angle FE OM OM 0.0 180.0! DUMMY PARAMETER FOR PATCH AND ANALYSIS.
angle C OS CH3E 46.5 120.5! FROM PARDNA10
angle CH2E S CH3E 50.0 99.5! FROM PARMFIX9, CHECK WITH IR
angle CH2E S S 50.0 104.2
angle CT S CT 50.0 99.5! FORCE CONSTANTS FROM PARMFIX9
angle CT S S 50.0 104.2
angle OC S OC 85.0 109.5! FORCE CONSTANT JST A GUESS.
!angle NP FE CM 5.0 90.0
!angle NP FE NP 50.0 90.0
!angle NP FE NR 5.0 115.0
!angle NP FE OM 5.0 90.0! JUST A GUESS FROM EXISTING FE CM DATA
!angle NR FE CM 5.0 180.0
!angle NR FE OM 5.0 180.0! JUST A GUESS FROM EXISTING FE CM DATA
dihe CH1E C N CH1E 10.0 2 180.0! PRO ISOM. BARRIER 20 KCAL/MOL.
dihe CH2E C N CH1E 10.0 2 180.0
dihe CR1E C C CR1E 5.0 2 180.0! => TRP OOP. VIB 170CM 1
dihe CR1E C C C 2.5 2 180.0! SEE BEHLEN ET AL JCP 75:5685 81
dihe CR1E C C NH1 2.5 2 180.0
dihe X C CH1E X 0.0 3 0.0! FROM GELIN THESIS AMIDES
dihe X C CH2E X 0.0 3 0.0! USING A SINGLE
dihe X C CR1E X 10.0 2 180.0! DIHEDRAL PER BOND RATHER
dihe X C CT X 0.0 3 0.0! THAN MULTIPLE TORSIONS.
dihe X C N X 8.2 2 180.0! ALKANE TORSION REDUCED TO
dihe X C NC2 X 8.2 2 180.0! 1.6 FROM 1.8 TO COINCIDE WITH
dihe X C NH1 X 8.2 2 180.0! THE EXPERIMENTAL BARRIER.
dihe X C NH2 X 8.2 2 180.0
dihe X C OH1 X 1.8 2 180.0
dihe X C OS X 1.8 2 180.0 ! INFERRED FROM C-OH1
dihe X CH1E CH1E X 1.6 3 0.0
dihe X CH1E CH2E X 1.6 3 0.0
dihe X CH1E N X 0.3 3 0.0! FROM HAGLER ET AL TABULATION OF
dihe X CH1E NH1 X 0.3 3 0.0! EXP. DATA AND 6 31G CALC.
dihe X CH1E NH2 X 1.8 3 0.0! PROTONATED SECONDARY AMINE
dihe X CH1E NH3 X 0.6 3 0.0! 1/PROTON SO 3 FOR THE BOND
dihe X CH1E OH1 X 0.5 3 0.0! CHANGED TO ROUGHLY MEOH
dihe X CH2E CH2E X 1.6 3 0.0
dihe X CH2E N X 0.3 3 0.0! SEE CH1E COMMENTS
dihe X CH2E NH1 X 0.3 3 0.0
dihe X CH2E NH2 X 0.6 3 0.0
dihe X CH2E NH3 X 0.6 3 0.0
dihe X CH2E OH1 X 0.5 3 0.0
dihe X CH2E S X 1.2 2 0.0
dihe X CT CT X 1.6 3 0.0
dihe X CT N X 0.3 3 0.0! SEE CH1E COMMENTS
dihe X CT NC2 X 0.3 3 0.0
dihe X CT NH1 X 0.3 3 0.0
dihe X CT NH2 X 0.6 3 0.0
dihe X CT NH3 X 0.6 3 0.0
dihe X CT OH1 X 0.5 3 0.0
dihe X CT S X 1.2 2 0.0
!dihe X FE NR X 0.05 4 0.0
!dihe X FE CM X 0.05 4 0.0
!dihe X FE OM X 0.00 4 0.0
dihe X S S X 4.0 2 0.0! FROM EXP.R BARRI
impr C C CR1E CH2E 90.0 0 0.0!GIVE 220 CM 1 METHYL OOP FOR TOLUENE.
impr C CR1E C CH2E 90.0 0 0.0!USED HERE FOR TRP CG OUT OF PLANE
impr C CR1E CR1E CH2E 90.0 0 0.0! PHE, AND TYR CG OOP
impr C CR1E NH1 CH2E 90.0 0 0.0! HIS CG RING OOP
impr C NH1 CR1E CH2E 90.0 0 0.0!
impr C CR1E CR1E OH1 150.0 0 0.0! GIVE 249 CM 1 PHENOL OH OOP.
impr C H H NH2 45.0 0 0.0! PRIMARY AMIDES (ASN AND GLN) OOP
impr C OC OC CH1E 100.0 0 0.0! CARBOXYL OUT OF PLANE.
impr C OC OC CH2E 100.0 0 0.0!
impr C X X C 25.0 0 0.0! FROM BENZENE NORMAL MODE ANALYSIS
impr C X X CH2E 90.0 0 0.0! FROM TOLUENE METHYL OOP. 217 CM 1
impr C X X CH3E 90.0 0 0.0
impr C X X CR1E 25.0 0 0.0
impr C X X H 75.0 0 0.0! FROM BENZENE NORMAL MODE ANALYSIS
impr C X X HA 75.0 0 0.0!
impr C X X NH1 100.0 0 0.0! AMIDES FIT TO N METHYL ACETAMIDE.
impr C X X O 100.0 0 0.0
impr C X X OC 100.0 0 0.0
impr C X X OH1 150.0 0 0.0! USED FOR TYR HYDROXYL OOP
impr CH1E X X CH1E 55.0 0 35.26439! CALCULATED TO BE THE SAME AS THE 3
impr CH1E X X CH2E 55.0 0 35.26439! H CH1E X ANGLES WITH K=40
impr CH1E X X CH3E 55.0 0 35.26439
impr CR1E X X CR1E 25.0 0 0.0! EXTENDED ATOM VERSION OF BENZENE
impr CR1E X X NH1 25.0 0 0.0! SAME AS ABOVE FOR LACK OF VALUES
!impr FE X X NP 20.0 0 0.0! FROM PARMFIX9
impr H X X O 45.0 0 0.0
impr N CH1E CH2E C 45.0 0 0.0! PROLINE NITROGENS
impr N X X CH2E 45.0 0 0.0
impr N X X CT 45.0 0 0.0
impr NC2 X X CT 45.0 0 0.0
impr NC2 X X HC 45.0 0 0.0
impr NH1 X X CH1E 45.0 0 0.0
impr NH1 X X CH2E 45.0 0 0.0
impr NH1 X X CH3E 45.0 0 0.0
impr NH1 X X CT 45.0 0 0.0
impr NH1 X X H 45.0 0 0.0! AMIDES PROTON OOP
impr NH1 X X NH1 25.0 0 0.0!
impr NH1 X X NR 25.0 0 0.0
impr NH2 X X H 45.0 0 0.0
impr NR X X C 25.0 0 0.0
impr NR X X CR1E 25.0 0 0.0
impr NR X X CT 25.0 0 0.0
impr NR X X CH3E 25.0 0 0.0 ! FOR NETROPSIN
{* nonbonding parameter section *}
{* ============================ *}
! eps sigma eps(1:4) sigma(1:4)
! (kcal/mol) (A)
! ---------------------------------------
NONBonded H 0.0498 1.4254 0.0498 1.4254
NONBonded HA 0.0450 2.6157 0.0450 2.6157 !- charged group.
NONBonded HC 0.0498 1.0691 0.0498 1.0691 ! Reduced vdw radius
!
NONBonded C 0.1200 3.7418 0.1000 3.3854 ! carbonyl carbon
NONBonded CH1E 0.0486 4.2140 0.1000 3.3854 ! \
NONBonded CH2E 0.1142 3.9823 0.1000 3.3854 ! extended carbons
NONBonded CH3E 0.1811 3.8576 0.1000 3.3854 ! /
!! NONBonded CM 0.0262 4.4367 0.1000 3.3854
NONBonded CR1E 0.1200 3.7418 0.1000 3.3854 ! ring carbons
!! NONBonded CT 0.0262 4.4367 0.1000 3.3854
!
NONBonded N 0.2384 2.8509 0.2384 2.8509
NONBonded NC2 0.2384 2.8509 0.2384 2.8509
NONBonded NH1 0.2384 2.8509 0.2384 2.8509
NONBonded NH2 0.2384 2.8509 0.2384 2.8509
NONBonded NH3 0.2384 2.8509 0.2384 2.8509
NONBonded NP 0.2384 2.8509 0.2384 2.8509
NONBonded NR 0.2384 2.8509 0.2384 2.8509
!
NONBonded O 0.1591 2.8509 0.1591 2.8509
NONBonded OC 0.6469 2.8509 0.6469 2.8509
NONBonded OH1 0.1591 2.8509 0.1591 2.8509
!! NONBonded OM 0.1591 2.8509 0.1591 2.8509
NONBonded OS 0.1591 2.8509 0.1591 2.8509
!
NONBonded S 0.0430 3.3676 0.0430 3.3676
NONBonded SH1E 0.0430 3.3676 0.0430 3.3676
!
!! NONBONDED FE 0.0000 1.1582 0.0000 1.1582
set echo=true end

Просмотреть файл

@ -0,0 +1,77 @@
REMARK FILENAME="/usr/people/nonella/xplor/benchmark1/ALANIN.PDB"
REMARK PARAM11.PRO ( from PARAM6A )
REMARK ===========
REMARK PROTEIN PARAMETERS:
REMARK PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
REMARK TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
REMARK LENNARD-JONES NONBONDED PARAMETERS WITH SPECIAL TREATMENT OF 1:4
REMARK CARBON-CARBON INTERACTIONS: JORGENSON ET. AL.
REMARK JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
REMARK DATE:16-Feb-89 11:21:32 created by user: nonella
ATOM 1 CA ACE 1 -2.184 0.591 0.910 1.00 0.00 MAIN
ATOM 2 C ACE 1 -0.665 0.627 0.966 1.00 0.00 MAIN
ATOM 3 O ACE 1 -0.069 1.213 1.868 1.00 0.00 MAIN
ATOM 4 N ALA 2 0.000 0.000 0.000 1.00 0.00 MAIN
ATOM 5 H ALA 2 -0.490 -0.462 -0.712 1.00 0.00 MAIN
ATOM 6 CA ALA 2 1.450 0.000 0.000 1.00 0.00 MAIN
ATOM 7 CB ALA 2 1.969 -0.670 -1.262 1.00 0.00 MAIN
ATOM 8 C ALA 2 2.010 1.413 0.000 1.00 0.00 MAIN
ATOM 9 O ALA 2 2.911 1.748 0.767 1.00 0.00 MAIN
ATOM 10 N ALA 3 1.488 2.280 -0.863 1.00 0.00 MAIN
ATOM 11 H ALA 3 0.770 1.998 -1.467 1.00 0.00 MAIN
ATOM 12 CA ALA 3 1.981 3.643 -0.909 1.00 0.00 MAIN
ATOM 13 CB ALA 3 1.147 4.464 -1.880 1.00 0.00 MAIN
ATOM 14 C ALA 3 1.865 4.326 0.444 1.00 0.00 MAIN
ATOM 15 O ALA 3 2.801 4.963 0.924 1.00 0.00 MAIN
ATOM 16 N ALA 4 0.710 4.211 1.093 1.00 0.00 MAIN
ATOM 17 H ALA 4 -0.026 3.700 0.697 1.00 0.00 MAIN
ATOM 18 CA ALA 4 0.541 4.841 2.388 1.00 0.00 MAIN
ATOM 19 CB ALA 4 -0.809 4.462 2.976 1.00 0.00 MAIN
ATOM 20 C ALA 4 1.591 4.371 3.381 1.00 0.00 MAIN
ATOM 21 O ALA 4 2.212 5.167 4.085 1.00 0.00 MAIN
ATOM 22 N ALA 5 1.818 3.063 3.463 1.00 0.00 MAIN
ATOM 23 H ALA 5 1.315 2.443 2.895 1.00 0.00 MAIN
ATOM 24 CA ALA 5 2.809 2.556 4.392 1.00 0.00 MAIN
ATOM 25 CB ALA 5 2.970 1.055 4.209 1.00 0.00 MAIN
ATOM 26 C ALA 5 4.176 3.170 4.142 1.00 0.00 MAIN
ATOM 27 O ALA 5 4.859 3.615 5.064 1.00 0.00 MAIN
ATOM 28 N ALA 6 4.611 3.212 2.886 1.00 0.00 MAIN
ATOM 29 H ALA 6 4.055 2.853 2.163 1.00 0.00 MAIN
ATOM 30 CA ALA 6 5.908 3.786 2.586 1.00 0.00 MAIN
ATOM 31 CB ALA 6 6.121 3.830 1.082 1.00 0.00 MAIN
ATOM 32 C ALA 6 6.012 5.221 3.079 1.00 0.00 MAIN
ATOM 33 O ALA 6 6.992 5.614 3.710 1.00 0.00 MAIN
ATOM 34 N ALA 7 5.002 6.040 2.802 1.00 0.00 MAIN
ATOM 35 H ALA 7 4.228 5.711 2.297 1.00 0.00 MAIN
ATOM 36 CA ALA 7 5.044 7.419 3.245 1.00 0.00 MAIN
ATOM 37 CB ALA 7 3.730 8.110 2.918 1.00 0.00 MAIN
ATOM 38 C ALA 7 5.219 7.518 4.752 1.00 0.00 MAIN
ATOM 39 O ALA 7 6.045 8.278 5.255 1.00 0.00 MAIN
ATOM 40 N ALA 8 4.445 6.748 5.512 1.00 0.00 MAIN
ATOM 41 H ALA 8 3.792 6.148 5.096 1.00 0.00 MAIN
ATOM 42 CA ALA 8 4.566 6.799 6.956 1.00 0.00 MAIN
ATOM 43 CB ALA 8 3.670 5.747 7.589 1.00 0.00 MAIN
ATOM 44 C ALA 8 5.984 6.488 7.409 1.00 0.00 MAIN
ATOM 45 O ALA 8 6.560 7.186 8.241 1.00 0.00 MAIN
ATOM 46 N ALA 9 6.582 5.429 6.871 1.00 0.00 MAIN
ATOM 47 H ALA 9 6.109 4.882 6.209 1.00 0.00 MAIN
ATOM 48 CA ALA 9 7.934 5.082 7.264 1.00 0.00 MAIN
ATOM 49 CB ALA 9 8.436 3.918 6.425 1.00 0.00 MAIN
ATOM 50 C ALA 9 8.898 6.233 7.027 1.00 0.00 MAIN
ATOM 51 O ALA 9 9.705 6.584 7.887 1.00 0.00 MAIN
ATOM 52 N ALA 10 8.839 6.851 5.851 1.00 0.00 MAIN
ATOM 53 H ALA 10 8.190 6.560 5.176 1.00 0.00 MAIN
ATOM 54 CA ALA 10 9.733 7.956 5.567 1.00 0.00 MAIN
ATOM 55 CB ALA 10 9.388 8.570 4.219 1.00 0.00 MAIN
ATOM 56 C ALA 10 9.595 9.067 6.595 1.00 0.00 MAIN
ATOM 57 O ALA 10 10.580 9.587 7.117 1.00 0.00 MAIN
ATOM 58 N ALA 11 8.364 9.460 6.912 1.00 0.00 MAIN
ATOM 59 H ALA 11 7.590 9.036 6.488 1.00 0.00 MAIN
ATOM 60 CA ALA 11 8.169 10.516 7.887 1.00 0.00 MAIN
ATOM 61 CB ALA 11 6.686 10.695 8.168 1.00 0.00 MAIN
ATOM 62 C ALA 11 8.823 10.177 9.217 1.00 0.00 MAIN
ATOM 63 O ALA 11 9.523 10.992 9.815 1.00 0.00 MAIN
ATOM 64 N CBX 12 8.610 8.962 9.714 1.00 0.00 MAIN
ATOM 65 H CBX 12 8.050 8.324 9.225 1.00 0.00 MAIN
ATOM 66 CA CBX 12 9.223 8.571 11.014 1.00 0.00 MAIN
END

Просмотреть файл

@ -0,0 +1,206 @@
PSF
11 !NTITLE
REMARKS FILENAME="/usr/people/nonella/xplor/benchmark1/ALANIN.PSF"
REMARKS PARAM11.PRO ( from PARAM6A )
REMARKS ===========
REMARKS PROTEIN PARAMETERS:
REMARKS PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
REMARKS TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
REMARKS LENNARD-JONES NONBONDED PARAMETERS WITH SPECIAL TREATMENT OF 1:4
REMARKS CARBON-CARBON INTERACTIONS: JORGENSON ET. AL.
REMARKS JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
REMARKS
REMARKS DATE:16-Feb-89 11:21:29 created by user: nonella
66 !NATOM
1 MAIN 1 ACE CA CH3E 0.000000E+00 15.0350 0
2 MAIN 1 ACE C C 0.450000 12.0110 0
3 MAIN 1 ACE O O -0.450000 15.9994 0
4 MAIN 2 ALA N NH1 -0.350000 14.0067 0
5 MAIN 2 ALA H H 0.250000 1.00800 0
6 MAIN 2 ALA CA CH1E 0.100000 13.0190 0
7 MAIN 2 ALA CB CH3E 0.000000E+00 15.0350 0
8 MAIN 2 ALA C C 0.450000 12.0110 0
9 MAIN 2 ALA O O -0.450000 15.9994 0
10 MAIN 3 ALA N NH1 -0.350000 14.0067 0
11 MAIN 3 ALA H H 0.250000 1.00800 0
12 MAIN 3 ALA CA CH1E 0.100000 13.0190 0
13 MAIN 3 ALA CB CH3E 0.000000E+00 15.0350 0
14 MAIN 3 ALA C C 0.450000 12.0110 0
15 MAIN 3 ALA O O -0.450000 15.9994 0
16 MAIN 4 ALA N NH1 -0.350000 14.0067 0
17 MAIN 4 ALA H H 0.250000 1.00800 0
18 MAIN 4 ALA CA CH1E 0.100000 13.0190 0
19 MAIN 4 ALA CB CH3E 0.000000E+00 15.0350 0
20 MAIN 4 ALA C C 0.450000 12.0110 0
21 MAIN 4 ALA O O -0.450000 15.9994 0
22 MAIN 5 ALA N NH1 -0.350000 14.0067 0
23 MAIN 5 ALA H H 0.250000 1.00800 0
24 MAIN 5 ALA CA CH1E 0.100000 13.0190 0
25 MAIN 5 ALA CB CH3E 0.000000E+00 15.0350 0
26 MAIN 5 ALA C C 0.450000 12.0110 0
27 MAIN 5 ALA O O -0.450000 15.9994 0
28 MAIN 6 ALA N NH1 -0.350000 14.0067 0
29 MAIN 6 ALA H H 0.250000 1.00800 0
30 MAIN 6 ALA CA CH1E 0.100000 13.0190 0
31 MAIN 6 ALA CB CH3E 0.000000E+00 15.0350 0
32 MAIN 6 ALA C C 0.450000 12.0110 0
33 MAIN 6 ALA O O -0.450000 15.9994 0
34 MAIN 7 ALA N NH1 -0.350000 14.0067 0
35 MAIN 7 ALA H H 0.250000 1.00800 0
36 MAIN 7 ALA CA CH1E 0.100000 13.0190 0
37 MAIN 7 ALA CB CH3E 0.000000E+00 15.0350 0
38 MAIN 7 ALA C C 0.450000 12.0110 0
39 MAIN 7 ALA O O -0.450000 15.9994 0
40 MAIN 8 ALA N NH1 -0.350000 14.0067 0
41 MAIN 8 ALA H H 0.250000 1.00800 0
42 MAIN 8 ALA CA CH1E 0.100000 13.0190 0
43 MAIN 8 ALA CB CH3E 0.000000E+00 15.0350 0
44 MAIN 8 ALA C C 0.450000 12.0110 0
45 MAIN 8 ALA O O -0.450000 15.9994 0
46 MAIN 9 ALA N NH1 -0.350000 14.0067 0
47 MAIN 9 ALA H H 0.250000 1.00800 0
48 MAIN 9 ALA CA CH1E 0.100000 13.0190 0
49 MAIN 9 ALA CB CH3E 0.000000E+00 15.0350 0
50 MAIN 9 ALA C C 0.450000 12.0110 0
51 MAIN 9 ALA O O -0.450000 15.9994 0
52 MAIN 10 ALA N NH1 -0.350000 14.0067 0
53 MAIN 10 ALA H H 0.250000 1.00800 0
54 MAIN 10 ALA CA CH1E 0.100000 13.0190 0
55 MAIN 10 ALA CB CH3E 0.000000E+00 15.0350 0
56 MAIN 10 ALA C C 0.450000 12.0110 0
57 MAIN 10 ALA O O -0.450000 15.9994 0
58 MAIN 11 ALA N NH1 -0.350000 14.0067 0
59 MAIN 11 ALA H H 0.250000 1.00800 0
60 MAIN 11 ALA CA CH1E 0.100000 13.0190 0
61 MAIN 11 ALA CB CH3E 0.000000E+00 15.0350 0
62 MAIN 11 ALA C C 0.450000 12.0110 0
63 MAIN 11 ALA O O -0.450000 15.9994 0
64 MAIN 12 CBX N NH1 -0.350000 14.0067 0
65 MAIN 12 CBX H H 0.250000 1.00800 0
66 MAIN 12 CBX CA CH3E 0.100000 15.0350 0
65 !NBOND: bonds
1 2 2 3 4 6 6 8
8 9 4 5 6 7 2 4
10 12 12 14 14 15 10 11
12 13 8 10 16 18 18 20
20 21 16 17 18 19 14 16
22 24 24 26 26 27 22 23
24 25 20 22 28 30 30 32
32 33 28 29 30 31 26 28
34 36 36 38 38 39 34 35
36 37 32 34 40 42 42 44
44 45 40 41 42 43 38 40
46 48 48 50 50 51 46 47
48 49 44 46 52 54 54 56
56 57 52 53 54 55 50 52
58 60 60 62 62 63 58 59
60 61 56 58 64 66 64 65
62 64
96 !NTHETA: angles
1 2 3 4 6 8 6 4 5
4 6 7 6 8 9 8 6 7
1 2 4 3 2 4 2 4 6
2 4 5 10 12 14 12 10 11
10 12 13 12 14 15 14 12 13
6 8 10 9 8 10 8 10 12
8 10 11 16 18 20 18 16 17
16 18 19 18 20 21 20 18 19
12 14 16 15 14 16 14 16 18
14 16 17 22 24 26 24 22 23
22 24 25 24 26 27 26 24 25
18 20 22 21 20 22 20 22 24
20 22 23 28 30 32 30 28 29
28 30 31 30 32 33 32 30 31
24 26 28 27 26 28 26 28 30
26 28 29 34 36 38 36 34 35
34 36 37 36 38 39 38 36 37
30 32 34 33 32 34 32 34 36
32 34 35 40 42 44 42 40 41
40 42 43 42 44 45 44 42 43
36 38 40 39 38 40 38 40 42
38 40 41 46 48 50 48 46 47
46 48 49 48 50 51 50 48 49
42 44 46 45 44 46 44 46 48
44 46 47 52 54 56 54 52 53
52 54 55 54 56 57 56 54 55
48 50 52 51 50 52 50 52 54
50 52 53 58 60 62 60 58 59
58 60 61 60 62 63 62 60 61
54 56 58 57 56 58 56 58 60
56 58 59 66 64 65 60 62 64
63 62 64 62 64 66 62 64 65
31 !NPHI: dihedrals
2 4 6 8 1 2 4 6
8 10 12 14 4 6 8 10
6 8 10 12 14 16 18 20
10 12 14 16 12 14 16 18
20 22 24 26 16 18 20 22
18 20 22 24 26 28 30 32
22 24 26 28 24 26 28 30
32 34 36 38 28 30 32 34
30 32 34 36 38 40 42 44
34 36 38 40 36 38 40 42
44 46 48 50 40 42 44 46
42 44 46 48 50 52 54 56
46 48 50 52 48 50 52 54
56 58 60 62 52 54 56 58
54 56 58 60 58 60 62 64
60 62 64 66
32 !NIMPHI: impropers
6 4 8 7 2 1 4 3
4 2 6 5 12 10 14 13
8 6 10 9 10 8 12 11
18 16 20 19 14 12 16 15
16 14 18 17 24 22 26 25
20 18 22 21 22 20 24 23
30 28 32 31 26 24 28 27
28 26 30 29 36 34 38 37
32 30 34 33 34 32 36 35
42 40 44 43 38 36 40 39
40 38 42 41 48 46 50 49
44 42 46 45 46 44 48 47
54 52 56 55 50 48 52 51
52 50 54 53 60 58 62 61
56 54 58 57 58 56 60 59
62 60 64 63 64 62 66 65
11 !NDON: donors
4 5 10 11 16 17 22 23
28 29 34 35 40 41 46 47
52 53 58 59 64 65
11 !NACC: acceptors
3 2 9 8 15 14 21 20
27 26 33 32 39 38 45 44
51 50 57 56 63 62
0 !NNB
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0
33 0 !NGRP
0 0 0 1 0 0 3 0 0
6 0 0 7 0 0 9 0 0
12 0 0 13 0 0 15 0 0
18 0 0 19 0 0 21 0 0
24 0 0 25 0 0 27 0 0
30 0 0 31 0 0 33 0 0
36 0 0 37 0 0 39 0 0
42 0 0 43 0 0 45 0 0
48 0 0 49 0 0 51 0 0
54 0 0 55 0 0 57 0 0
60 0 0 61 0 0 63 0 0

Просмотреть файл

@ -0,0 +1,20 @@
# shared simulation options for replica exchange
timestep 1.0
structure alanin.psf
coordinates unfolded.pdb
margin 10.0
stepspercycle 100
parameters alanin.params
exclude scaled1-4
1-4scaling 0.4
switching on
switchdist 7.0
cutoff 8.0
pairlistdist 10.0
langevin on
langevinDamping 10.0

Просмотреть файл

@ -0,0 +1,37 @@
# configuration for replica exchange scripts
# run simulation:
# mkdir output
# (cd output; mkdir 0 1 2 3 4 5 6 7)
# mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 job0.conf +stdout output/%d/job0.%d.log
# the number of MPI ranks (-np) must be a multiple of the number of replicas (+replicas)
# to continue:
# mpirun -np 8 -hostfile hostfile $bindir/namd2 +replicas 8 job0.conf +stdout output/%d/job1.%d.log
# increase num_runs below if job completed, or use latest restartXXX.tcl file available
# be sure to increment jobX for +stdout option on command line
# view in VMD: source job0.conf; source ../show_replicas.vmd
# add continued: source job1.conf; source ../show_replicas.vmd
# show both: vmd -e load_all.vmd
# sort into single-temperature trajectories:
# $bindir/sortreplicas output/%s/fold_alanin.job0 8 10
# $bindir/sortreplicas output/%s/fold_alanin.job1 8 10
set num_replicas 8
set min_temp 300
set max_temp 600
set steps_per_run 1000
set num_runs 10000
# num_runs should be divisible by runs_per_frame * frames_per_restart
set runs_per_frame 10
set frames_per_restart 10
set namd_config_file "alanin_base.namd"
set output_root "output/%s/fold_alanin" ; # directories must exist
# the following used only by show_replicas.vmd
set psf_file "alanin.psf"
set initial_pdb_file "unfolded.pdb"
set fit_pdb_file "alanin.pdb"

Просмотреть файл

@ -0,0 +1,6 @@
source fold_alanin.conf
# prevent VMD from reading replica.namd by trying command only NAMD has
if { ! [catch numPes] } { source ../replica.namd }

Просмотреть файл

@ -0,0 +1,8 @@
source fold_alanin.conf
source [format $output_root.job0.restart10000.tcl ""]
set num_runs 20000
# prevent VMD from reading replica.namd by trying command only NAMD has
if { ! [catch numPes] } { source ../replica.namd }

Просмотреть файл

@ -0,0 +1,8 @@
foreach f { job0.conf job1.conf } {
source $f
source ../show_replicas.vmd
}
source ../clone_reps.vmd

Просмотреть файл

@ -0,0 +1,68 @@
CRYST1 1.000 1.000 1.000 90.00 90.00 90.00 P 1 1
ATOM 1 CA ACE M 1 7.545 3.903 -0.703 1.00 0.00 MAIN
ATOM 2 C ACE M 1 7.257 3.389 -2.113 1.00 0.00 MAIN
ATOM 3 O ACE M 1 7.815 2.440 -2.557 1.00 0.00 MAIN
ATOM 4 N ALA M 2 6.408 3.866 -2.940 1.00 0.00 MAIN
ATOM 5 H ALA M 2 6.431 3.594 -3.892 1.00 0.00 MAIN
ATOM 6 CA ALA M 2 5.356 4.859 -2.667 1.00 0.00 MAIN
ATOM 7 CB ALA M 2 5.248 6.041 -3.634 1.00 0.00 MAIN
ATOM 8 C ALA M 2 4.012 4.336 -2.242 1.00 0.00 MAIN
ATOM 9 O ALA M 2 3.339 5.030 -1.516 1.00 0.00 MAIN
ATOM 10 N ALA M 3 3.566 3.177 -2.605 1.00 0.00 MAIN
ATOM 11 H ALA M 3 4.279 2.496 -2.837 1.00 0.00 MAIN
ATOM 12 CA ALA M 3 2.199 2.714 -2.291 1.00 0.00 MAIN
ATOM 13 CB ALA M 3 1.606 2.010 -3.498 1.00 0.00 MAIN
ATOM 14 C ALA M 3 2.167 1.886 -1.075 1.00 0.00 MAIN
ATOM 15 O ALA M 3 2.630 0.743 -1.304 1.00 0.00 MAIN
ATOM 16 N ALA M 4 1.898 2.436 0.057 1.00 0.00 MAIN
ATOM 17 H ALA M 4 1.772 3.396 0.199 1.00 0.00 MAIN
ATOM 18 CA ALA M 4 1.526 1.419 1.125 1.00 0.00 MAIN
ATOM 19 CB ALA M 4 2.864 0.669 1.527 1.00 0.00 MAIN
ATOM 20 C ALA M 4 1.102 2.171 2.395 1.00 0.00 MAIN
ATOM 21 O ALA M 4 0.903 3.365 2.445 1.00 0.00 MAIN
ATOM 22 N ALA M 5 0.822 1.363 3.472 1.00 0.00 MAIN
ATOM 23 H ALA M 5 0.619 0.403 3.272 1.00 0.00 MAIN
ATOM 24 CA ALA M 5 0.586 2.122 4.730 1.00 0.00 MAIN
ATOM 25 CB ALA M 5 -0.225 1.321 5.745 1.00 0.00 MAIN
ATOM 26 C ALA M 5 1.957 2.650 5.334 1.00 0.00 MAIN
ATOM 27 O ALA M 5 2.890 2.009 5.755 1.00 0.00 MAIN
ATOM 28 N ALA M 6 1.949 3.940 5.417 1.00 0.00 MAIN
ATOM 29 H ALA M 6 1.153 4.363 5.043 1.00 0.00 MAIN
ATOM 30 CA ALA M 6 3.159 4.740 5.778 1.00 0.00 MAIN
ATOM 31 CB ALA M 6 3.722 5.241 4.495 1.00 0.00 MAIN
ATOM 32 C ALA M 6 2.959 5.942 6.654 1.00 0.00 MAIN
ATOM 33 O ALA M 6 2.619 6.999 6.034 1.00 0.00 MAIN
ATOM 34 N ALA M 7 3.016 5.806 8.064 1.00 0.00 MAIN
ATOM 35 H ALA M 7 3.560 5.143 8.472 1.00 0.00 MAIN
ATOM 36 CA ALA M 7 2.950 6.912 8.972 1.00 0.00 MAIN
ATOM 37 CB ALA M 7 2.075 6.495 10.171 1.00 0.00 MAIN
ATOM 38 C ALA M 7 4.308 7.357 9.514 1.00 0.00 MAIN
ATOM 39 O ALA M 7 5.209 6.495 9.662 1.00 0.00 MAIN
ATOM 40 N ALA M 8 4.605 8.622 9.688 1.00 0.00 MAIN
ATOM 41 H ALA M 8 4.196 9.229 9.142 1.00 0.00 MAIN
ATOM 42 CA ALA M 8 5.631 9.171 10.564 1.00 0.00 MAIN
ATOM 43 CB ALA M 8 5.800 8.379 11.917 1.00 0.00 MAIN
ATOM 44 C ALA M 8 7.079 9.128 9.989 1.00 0.00 MAIN
ATOM 45 O ALA M 8 7.767 10.072 9.908 1.00 0.00 MAIN
ATOM 46 N ALA M 9 7.582 7.920 9.483 1.00 0.00 MAIN
ATOM 47 H ALA M 9 6.905 7.232 9.430 1.00 0.00 MAIN
ATOM 48 CA ALA M 9 8.812 7.701 8.813 1.00 0.00 MAIN
ATOM 49 CB ALA M 9 9.287 6.250 9.081 1.00 0.00 MAIN
ATOM 50 C ALA M 9 8.379 7.815 7.411 1.00 0.00 MAIN
ATOM 51 O ALA M 9 7.367 7.187 6.975 1.00 0.00 MAIN
ATOM 52 N ALA M 10 9.134 8.562 6.619 1.00 0.00 MAIN
ATOM 53 H ALA M 10 10.046 8.872 6.722 1.00 0.00 MAIN
ATOM 54 CA ALA M 10 8.910 8.575 5.160 1.00 0.00 MAIN
ATOM 55 CB ALA M 10 9.048 10.045 5.167 1.00 0.00 MAIN
ATOM 56 C ALA M 10 10.218 8.105 4.792 1.00 0.00 MAIN
ATOM 57 O ALA M 10 11.289 8.219 5.435 1.00 0.00 MAIN
ATOM 58 N ALA M 11 10.148 7.595 3.632 1.00 0.00 MAIN
ATOM 59 H ALA M 11 9.358 7.606 3.028 1.00 0.00 MAIN
ATOM 60 CA ALA M 11 11.304 6.912 2.976 1.00 0.00 MAIN
ATOM 61 CB ALA M 11 11.624 5.636 3.622 1.00 0.00 MAIN
ATOM 62 C ALA M 11 10.889 6.651 1.488 1.00 0.00 MAIN
ATOM 63 O ALA M 11 9.707 7.037 1.113 1.00 0.00 MAIN
ATOM 64 N CBX M 12 11.676 6.041 0.679 1.00 0.00 MAIN
ATOM 65 H CBX M 12 12.577 5.823 0.813 1.00 0.00 MAIN
ATOM 66 CA CBX M 12 11.275 5.739 -0.745 1.00 0.00 MAIN
END

Просмотреть файл

@ -0,0 +1,11 @@
#!/bin/sh
if (( $# != 2 )); then {
echo "usage: $0 <output_dir> <num_replicas>"
exit -1
}; fi
mkdir $1
for (( i=0; i<$2; ++i )); do mkdir $1/$i; done

Просмотреть файл

@ -0,0 +1,205 @@
replicaBarrier
set nr [numReplicas]
if { $num_replicas != $nr } {
error "restart with wrong number of replicas"
}
set r [myReplica]
set replica_id $r
if {[info exists restart_root]} { #restart
set restart_root [format $restart_root $replica_id]
source $restart_root.$replica_id.tcl
} else {
set i_job 0
set i_run 0
set i_step 0
if {[info exists first_timestep]} {
set i_step $first_timestep
}
set replica(index) $r
set replica(loc.a) $r
set replica(index.a) $r
set replica(loc.b) $r
set replica(index.b) $r
set replica(exchanges_attempted) 0
set replica(exchanges_accepted) 0
if { $r % 2 == 0 && $r+1 < $nr } {
set replica(loc.a) [expr $r+1]
set replica(index.a) [expr $r+1]
}
if { $r % 2 == 1 && $r > 0 } {
set replica(loc.a) [expr $r-1]
set replica(index.a) [expr $r-1]
}
if { $r % 2 == 1 && $r+1 < $nr } {
set replica(loc.b) [expr $r+1]
set replica(index.b) [expr $r+1]
}
if { $r % 2 == 0 && $r > 0 } {
set replica(loc.b) [expr $r-1]
set replica(index.b) [expr $r-1]
}
}
set job_output_root "$output_root.job$i_job"
firsttimestep $i_step
proc replica_temp { i } {
global num_replicas min_temp max_temp
return [format "%.2f" [expr ($min_temp * \
exp( log(1.0*$max_temp/$min_temp)*(1.0*$i/($num_replicas-1)) ) )]]
}
set replica(temperature) [replica_temp $replica(index)]
set replica(temperature.a) [replica_temp $replica(index.a)]
set replica(temperature.b) [replica_temp $replica(index.b)]
proc save_callback {labels values} {
global saved_labels saved_values
set saved_labels $labels
set saved_values $values
}
callback save_callback
proc save_array {} {
global saved_labels saved_values saved_array
foreach label $saved_labels value $saved_values {
set saved_array($label) $value
}
}
set NEWTEMP $replica(temperature)
seed [expr int(0*srand(int(100000*rand()) + 100*$replica_id) + 100000*rand() + 1)]
langevinTemp $NEWTEMP
outputname [format $job_output_root.$replica_id $replica_id]
if {$i_run} { #restart
bincoordinates $restart_root.$replica_id.coor
binvelocities $restart_root.$replica_id.vel
extendedSystem $restart_root.$replica_id.xsc
} else {
temperature $NEWTEMP
}
outputEnergies [expr $steps_per_run / 10]
dcdFreq [expr $steps_per_run * $runs_per_frame]
source $namd_config_file
set history_file [open [format "$job_output_root.$replica_id.history" $replica_id] "w"]
fconfigure $history_file -buffering line
while {$i_run < $num_runs} {
run $steps_per_run
save_array
incr i_step $steps_per_run
set TEMP $saved_array(TEMP)
set POTENTIAL [expr $saved_array(TOTAL) - $saved_array(KINETIC)]
puts $history_file "$i_step $replica(index) $NEWTEMP $TEMP $POTENTIAL"
if { $i_run % 2 == 0 } {
set swap a; set other b
} else {
set swap b; set other a
}
set doswap 0
if { $replica(index) < $replica(index.$swap) } {
set temp $replica(temperature)
set temp2 $replica(temperature.$swap)
set BOLTZMAN 0.001987191
set dbeta [expr ((1.0/$temp) - (1.0/$temp2)) / $BOLTZMAN]
set pot $POTENTIAL
set pot2 [replicaRecv $replica(loc.$swap)]
set delta [expr $dbeta * ($pot2 - $pot)]
set doswap [expr $delta < 0. || exp(-1. * $delta) > rand()]
replicaSend $doswap $replica(loc.$swap)
if { $doswap } {
set rid $replica(index)
set rid2 $replica(index.$swap)
puts stderr "EXCHANGE_ACCEPT $rid ($temp) $rid2 ($temp2) RUN $i_run"
incr replica(exchanges_accepted)
}
incr replica(exchanges_attempted)
}
if { $replica(index) > $replica(index.$swap) } {
replicaSend $POTENTIAL $replica(loc.$swap)
set doswap [replicaRecv $replica(loc.$swap)]
}
set newloc $r
if { $doswap } {
set newloc $replica(loc.$swap)
set replica(loc.$swap) $r
}
set replica(loc.$other) [replicaSendrecv $newloc $replica(loc.$other) $replica(loc.$other)]
set oldidx $replica(index)
if { $doswap } {
set OLDTEMP $replica(temperature)
array set replica [replicaSendrecv [array get replica] $newloc $newloc]
set NEWTEMP $replica(temperature)
rescalevels [expr sqrt(1.0*$NEWTEMP/$OLDTEMP)]
langevinTemp $NEWTEMP
}
# puts stderr "iteration $i_run replica $replica(index) now on rank $r"
# replicaBarrier
incr i_run
if { $i_run % ($runs_per_frame * $frames_per_restart) == 0 ||
$i_run == $num_runs } { # restart
set restart_root "$job_output_root.restart$i_run"
output [format $restart_root.$replica_id $replica_id]
set rfile [open [format "$restart_root.$replica_id.tcl" $replica_id] "w"]
puts $rfile [list array set replica [array get replica]]
close $rfile
replicaBarrier
if { $replica_id == 0 } {
set rfile [open [format "$restart_root.tcl" ""] "w"]
puts $rfile [list set i_job [expr $i_job + 1]]
puts $rfile [list set i_run $i_run]
puts $rfile [list set i_step $i_step]
puts $rfile [list set restart_root $restart_root]
close $rfile
if [info exists old_restart_root] {
set oldroot [format $old_restart_root ""]
file delete $oldroot.tcl
}
}
replicaBarrier
if [info exists old_restart_root] {
set oldroot [format $old_restart_root $replica_id]
file delete $oldroot.$replica_id.tcl
file delete $oldroot.$replica_id.coor
file delete $oldroot.$replica_id.vel
file delete $oldroot.$replica_id.xsc
}
set old_restart_root $restart_root
}
}
set attempts $replica(exchanges_attempted)
if $attempts {
set i $replica(index)
if { $replica(index.a) > $i } {
set swap a
} else {
set swap b
}
set temp $replica(temperature)
set temp2 $replica(temperature.$swap)
set accepts $replica(exchanges_accepted)
set ratio [expr 1.0*$accepts/$attempts]
puts stderr "EXCHANGE_RATIO $temp $temp2 $accepts $attempts $ratio"
}
replicaBarrier

Просмотреть файл

@ -0,0 +1,82 @@
# functions for reduction, broadcast, and timing across replicas
# reductions can use binary operators below, standard Tcl like concat,
# VMD/NAMD extensions like vecadd, or user-defined binary operators
proc add { a b } {
return [expr $a + $b]
}
proc and { a b } {
return [expr $a && $b]
}
proc or { a b } {
return [expr $a || $b]
}
proc min { a b } {
if { $a < $b } { return $a } else { return $b }
}
proc max { a b } {
if { $a > $b } { return $a } else { return $b }
}
proc replicaTime { script } {
set t [lindex [time {uplevel $script}] 0]
set min [replicaAllReduce min $t]
set max [replicaAllReduce max $t]
set sum [replicaAllReduce add $t]
set avg [expr $sum / [numReplicas]]
set loss [expr (100. * ($max - $avg)) / $avg]
set loss [format "%.2f" $loss]
print "REPLICA [myReplica] TIMING $t MIN $min MAX $max AVG $avg LOSS $loss% FOR $script"
}
proc replicaReduce { operator contrib } {
set rank [myReplica]
set size [numReplicas]
for { set i 1 } { $i < $size } { set i [expr 2 * $i] } {
if { $rank & $i } {
set dst [expr $rank - $i]
# print "rank $rank send to $dst"
replicaSend $contrib $dst
} else {
set src [expr $rank + $i]
if { $src < $size } {
# print "rank $rank recv from $src"
set contrib [$operator $contrib [replicaRecv $src]]
}
}
if { $rank & (2 * $i - 1) } { break }
}
if { ! $rank } { return $contrib }
}
proc replicaAllReduce { operator contrib } {
return [replicaBroadcast [replicaReduce $operator $contrib]]
}
proc replicaBroadcast { msg } {
set rank [myReplica]
set size [numReplicas]
for { set i 1 } { $i < $size } { set i [expr 2 * $i] } { }
for { set i [expr $i /2] } { $i > 0 } { set i [expr $i / 2] } {
if { $rank & ($i - 1) } { continue}
if { $rank & $i } {
set src [expr $rank - $i]
# print "rank $rank recv from $src"
set msg [replicaRecv $src]
} else {
set dst [expr $rank + $i]
if { $dst < $size } {
# print "rank $rank send to $dst"
replicaSend $msg $dst
}
}
}
return $msg
}

Просмотреть файл

@ -0,0 +1,71 @@
if {! [info exists i_job]} { set i_job 0 }
set job_output_root "$output_root.job$i_job"
set outputbase $job_output_root
if {! [info exists load_step] } {set load_step 1}
set steps_per_frame [expr $steps_per_run * $runs_per_frame * $load_step]
set dcd_filename_format "${outputbase}.%d.dcd"
set color_filename_format "${outputbase}.%d.history"
set color_index 1
set color_scale_min 0
set color_scale_max [expr $num_replicas - 1]
set fit_selection_text "backbone"
if {! [info exists fit_pdb_file] } {set fit_pdb_file $initial_pdb_file}
if {! [array exists replica_data]} {
if {[molinfo num] > 0} {
mol delete all
}
for {set replica_id 0} {$replica_id < $num_replicas} {incr replica_id} {
set molid [mol new $psf_file]
mol addfile $initial_pdb_file
set replica_data($replica_id.molid) $molid
set allsel [atomselect $molid "all"]
set replica_data($replica_id.allsel) $allsel
mol modcolor 0 $molid User
mol colupdate 0 $molid 1
mol scaleminmax $molid 0 $color_scale_min $color_scale_max
}
set fitmolid [mol new $psf_file]
mol addfile $fit_pdb_file
set basesel [atomselect $fitmolid $fit_selection_text]
}
for {set replica_id 0} {$replica_id < $num_replicas} {incr replica_id} {
set molid $replica_data($replica_id.molid)
mol top $molid
set dcdfile [format $dcd_filename_format $replica_id $replica_id]
mol addfile $dcdfile type dcd first [expr $load_step - 1] step $load_step waitfor all
set numframes [molinfo $molid get numframes]
set replica_data($replica_id.numframes) $numframes
set fitsel [atomselect $molid "index [$basesel get index]"]
set allsel $replica_data($replica_id.allsel)
set color_file [open [format $color_filename_format $replica_id $replica_id] "r"]
while {[gets $color_file colorvals] >= 0} {
set step [lindex $colorvals 0]
if {$step % $steps_per_frame} { continue }
set frame [expr $step/$steps_per_frame]
if {$frame < $replica_data($replica_id.numframes)} {
$allsel frame $frame
$allsel set user [lindex $colorvals $color_index]
}
}
for { set i 0 } { $i < $numframes } { incr i } {
$fitsel frame $i
$allsel frame $i
$allsel move [measure fit $fitsel $basesel]
}
$fitsel delete
}
# $basesel delete
# mol delete $fitmolid

Просмотреть файл

@ -0,0 +1,214 @@
# validate replica_neighbors proc - works in tclsh
for { set i 0 } { $i < $num_replicas } { incr i } {
set j 0
foreach nbr [replica_neighbors $i] {
if { $nbr < 0 } {
error "replica_neighbors inconsistency detected: neighbor $j of replica $i is $nbr but should not be negative"
}
if { $nbr >= $num_replicas } {
error "replica_neighbors inconsistency detected: neighbor $j of replica $i is $nbr but there are only $num_replicas replicas"
}
set rnbrl [replica_neighbors $nbr]
set rnbrc [llength $rnbrl]
if { $j >= $rnbrc } {
error "replica_neighbors inconsistency detected: neighbor $j of replica $i is $nbr but replica $nbr has only $rnbrc neighbors"
}
set rnbr [lindex $rnbrl $j]
if { $rnbr != $i } {
error "replica_neighbors inconsistency detected: neighbor $j of replica $i is $nbr but neighbor $j of replica $nbr is $rnbr"
}
incr j
}
}
puts "replica_neighbors proc passes internal consistency check"
# bail if this is not NAMD
if { [catch numPes] } {
puts "Tcl interpreter does not appear to be NAMD - script exiting"
return
}
replicaBarrier
set nr [numReplicas]
if { $num_replicas != $nr } {
error "restart with wrong number of replicas"
}
set r [myReplica]
set replica_id $r
if {[info exists restart_root]} { #restart
set restart_root [format $restart_root $replica_id]
source $restart_root.$replica_id.tcl
} else {
set i_job 0
set i_run 0
set i_step 0
if {[info exists first_timestep]} {
set i_step $first_timestep
}
set replica(index) $r
set nnbr 0
foreach nbr [replica_neighbors $r] {
set replica(loc.$nnbr) $nbr
set replica(index.$nnbr) $nbr
set replica(exchanges_attempted.$nnbr) 0
set replica(exchanges_accepted.$nnbr) 0
incr nnbr
}
set replica(num_neighbors) $nnbr
}
set job_output_root "$output_root.job$i_job"
firsttimestep $i_step
set replica(colvarbias) [replica_bias $replica(index)]
for { set i 0 } { $i < $replica(num_neighbors) } { incr i } {
set replica(colvarbias.$i) [replica_bias $replica(index.$i)]
set replica(colvarbias.$i) [replica_bias $replica(index.$i)]
}
proc save_callback {labels values} {
global saved_labels saved_values
set saved_labels $labels
set saved_values $values
}
callback save_callback
proc save_array {} {
global saved_labels saved_values saved_array
foreach label $saved_labels value $saved_values {
set saved_array($label) $value
}
}
seed [expr int(0*srand(int(100000*rand()) + 100*$replica_id) + 100000*rand() + 1)]
outputname [format $job_output_root.$replica_id $replica_id]
if {$i_run} { #restart
bincoordinates $restart_root.$replica_id.coor
binvelocities $restart_root.$replica_id.vel
extendedSystem $restart_root.$replica_id.xsc
colvarsInput $restart_root.$replica_id.colvars.state
} elseif { [info exists input_root] } {
set ir [format $input_root $replica_id $replica_id]
bincoordinates $ir.coor
binvelocities $ir.vel
extendedSystem $ir.xsc
} else {
temperature $temperature
}
outputEnergies [expr $steps_per_run / 10]
dcdFreq [expr $steps_per_run * $runs_per_frame]
source $namd_config_file
eval colvarbias [concat changeconfig $replica(colvarbias)]
set history_file [open [format "$job_output_root.$replica_id.history" $replica_id] "w"]
fconfigure $history_file -buffering line
while {$i_run < $num_runs} {
run $steps_per_run
save_array
incr i_step $steps_per_run
set TEMP $saved_array(TEMP)
set POTENTIAL [expr $saved_array(TOTAL) - $saved_array(KINETIC)]
puts $history_file "$i_step $replica(index) $TEMP $POTENTIAL"
set swap [expr $i_run % $replica(num_neighbors)]
set doswap 0
if { $replica(index) < $replica(index.$swap) } {
set BOLTZMAN 0.001987191
set ediff [eval colvarbias [concat energydiff $replica(colvarbias.$swap)]]
set ediff2 [replicaRecv $replica(loc.$swap)]
set delta [expr ($ediff + $ediff2) / ( $BOLTZMAN * $temperature )]
set doswap [expr $delta < 0. || exp(-1. * $delta) > rand()]
replicaSend $doswap $replica(loc.$swap)
if { $doswap } {
set rid $replica(index)
set rid2 $replica(index.$swap)
puts stderr "EXCHANGE_ACCEPT $rid $rid2 RUN $i_run"
incr replica(exchanges_accepted.$swap)
}
incr replica(exchanges_attempted.$swap)
}
if { $replica(index) > $replica(index.$swap) } {
set ediff [eval colvarbias [concat energydiff $replica(colvarbias.$swap)]]
replicaSend $ediff $replica(loc.$swap)
set doswap [replicaRecv $replica(loc.$swap)]
}
set newloc $r
if { $doswap } {
set newloc $replica(loc.$swap)
set replica(loc.$swap) $r
}
for { set i 0 } { $i < $replica(num_neighbors) } { incr i } {
if { $i != $swap } {
set replica(loc.$i) [replicaSendrecv $newloc $replica(loc.$i) $replica(loc.$i)]
}
}
set oldidx $replica(index)
if { $doswap } {
array set replica [replicaSendrecv [array get replica] $newloc $newloc]
eval colvarbias [concat changeconfig $replica(colvarbias)]
}
# puts stderr "iteration $i_run replica $replica(index) now on rank $r"
# replicaBarrier
incr i_run
if { $i_run % ($runs_per_frame * $frames_per_restart) == 0 ||
$i_run == $num_runs } { # restart
set restart_root "$job_output_root.restart$i_run"
set rroot [format $restart_root.$replica_id $replica_id]
output $rroot
set oroot [format $job_output_root.$replica_id $replica_id]
file rename -force $oroot.colvars.state $rroot.colvars.state
set rfile [open [format "$restart_root.$replica_id.tcl" $replica_id] "w"]
puts $rfile [list array set replica [array get replica]]
close $rfile
replicaBarrier
if { $replica_id == 0 } {
set rfile [open [format "$restart_root.tcl" ""] "w"]
puts $rfile [list set i_job [expr $i_job + 1]]
puts $rfile [list set i_run $i_run]
puts $rfile [list set i_step $i_step]
puts $rfile [list set restart_root $restart_root]
close $rfile
if [info exists old_restart_root] {
set oldroot [format $old_restart_root ""]
file delete $oldroot.tcl
}
}
replicaBarrier
if [info exists old_restart_root] {
set oldroot [format $old_restart_root $replica_id]
file delete $oldroot.$replica_id.tcl
file delete $oldroot.$replica_id.coor
file delete $oldroot.$replica_id.vel
file delete $oldroot.$replica_id.xsc
file delete $oldroot.$replica_id.colvars.state
}
set old_restart_root $restart_root
}
}
for { set i 0 } { $i < $replica(num_neighbors) } { incr i } {
set attempts $replica(exchanges_attempted.$i)
if $attempts {
set accepts $replica(exchanges_accepted.$i)
set ratio [expr 1.0*$accepts/$attempts]
puts stderr "EXCHANGE_RATIO $replica(index) $replica(index.$i) $accepts $attempts $ratio"
}
}
replicaBarrier

Просмотреть файл

@ -0,0 +1,402 @@
remark - parameter file PARAM19 -
remark PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
remark TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
remark JORGENSEN NONBOND PARAMETERS JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
set echo=false end
!! - PEPTIDE GEOMETRY TO GIVE RAMACHANDRAN ET AL BBA 359:298 (1974)
!! - PEPTIDE TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
!! - NONBONDED TERMS JORGENSEN JACS 103:3976 W/ RC1-4 = 1.80 EC1-4 = 0.1
!! The default h-bond exponents are now 6-repul 4-attr
!! ++++++++ ATOMTYPE OS (IN METHYL ESTER) ADDED FOR CHARMM COURSE /LN ++++
!! Switched from Slater-Kirkwood to simple mixing rules - AB
!! Hbond parameters based on comparisons of dimer results with
!! ab initio calculations. - WER 12/19/84
!! Grouping of atom types for VDW parameters - BRB 1/3/85
bond C C 450.0 1.38! B. R. GELIN THESIS AMIDE AND DIPEPTIDES
bond C CH1E 405.0 1.52! EXCEPT WHERE NOTED. CH1E,CH2E,CH3E, AND CT
bond C CH2E 405.0 1.52! ALL TREATED THE SAME. UREY BRADLEY TERMS ADDED
bond C CH3E 405.0 1.52
bond C CR1E 450.0 1.38
bond C CT 405.0 1.53
bond C N 471.0 1.33
bond C NC2 400.0 1.33! BOND LENGTH FROM PARMFIX9 FORCE K APROXIMATE
bond C NH1 471.0 1.33
bond C NH2 471.0 1.33
bond C NP 471.0 1.33
bond C NR 471.0 1.33
bond C O 580.0 1.23
bond C OC 580.0 1.23! FORCE DECREASE AND LENGTH INCREASE FROM C O
bond C OH1 450.0 1.38! FROM PARMFIX9 (NO VALUE IN GELIN THESIS)
bond C OS 292.0 1.43! FROM DEP NORMAL MODE FIT
bond CH1E CH1E 225.0 1.53
bond CH1E CH2E 225.0 1.52
bond CH1E CH3E 225.0 1.52
bond CH1E N 422.0 1.45
bond CH1E NH1 422.0 1.45
bond CH1E NH2 422.0 1.45
bond CH1E NH3 422.0 1.45
bond CH1E OH1 400.0 1.42! FROM PARMFIX9 (NO VALUE IN GELIN THESIS)
bond CH2E CH2E 225.0 1.52
bond CH2E CH3E 225.0 1.54
bond CH2E CR1E 250.0 1.45! FROM WARSHEL AND KARPLUS 1972 JACS 96:5612
bond CH2E N 422.0 1.45
bond CH2E NH1 422.0 1.45
bond CH2E NH2 422.0 1.45
bond CH2E NH3 422.0 1.45
bond CH2E OH1 400.0 1.42
bond CH2E S 450.0 1.81! FROM PARMFIX9
bond CH2E SH1E 450.0 1.81
bond CH3E NH1 422.0 1.49
bond CH3E NR 422.0 1.49 ! FOR NETROPSIN
bond CH3E S 450.0 1.77! FROM PARMFIX9
bond CH3E OS 292.0 1.38! FROM DEP NORMAL MODE FIT
bond CM OM 1115.0 1.128! FROM CAUGHEY ET AL(1978),CARBON MONOXIDE
bond CR1E CR1E 450.0 1.38
bond CR1E NH1 450.0 1.305
bond CR1E NR 450.0 1.305
bond CT CT 200.0 1.53
bond CT N 422.0 1.45
bond CT NC2 422.0 1.45
bond CT NH1 422.0 1.45
bond CT NH2 422.0 1.45
bond CT NH3 422.0 1.45
bond CT OH1 400.0 1.42
bond CT S 450.0 1.81
!bond FE CM 258.0 1.79! FROM KROEKER ET AL(JCP:72:4846)
!bond FE NP 500.0 2.09
!bond FE NR 65.0 1.98! FROM NAGAI ET AL(1980)
!bond FE OM 250.0 1.8! JUST A GUESS.
bond H NH1 405.0 0.98! GELIN AND IR STRETCH 3200 CM 1
bond H NH2 405.0 0.98
bond H OH1 450.0 0.96! FROM IR STRETCH 3400 CM 1
bond HA C 350.0 1.08
bond HA CT 300.0 1.08
bond HC NC2 405.0 1.00
bond HC NH1 405.0 0.98
bond HC NH3 405.0 1.04
bond OC S 400.0 1.43
bond OM OM 600.0 1.23! STRETCHING CONSTANT JUST A GUESS.
bond S S 500.0 2.02
angle C C C 70.0 106.5! FROM B. R. GELIN THESIS WITH HARMONIC
angle C C CH2E 65.0 126.5! PART OF F TERMS INCORPORATED. ATOMS
angle C C CH3E 65.0 126.5! WITH EXTENDED H COMPENSATED FOR LACK
angle C C CR1E 70.0 122.5! OF H ANGLES.
angle C C CT 70.0 126.5
angle C C HA 40.0 120.0! AMIDE PARAMETERS FIT BY LEAST SQUARES
angle C C NH1 65.0 109.0! TO N-METHYL ACETAMIDE VIBRATIONS.
angle C C NP 65.0 112.5! MINIMIZATION OF N-METHYL ACETAMIDE.
angle C C NR 65.0 112.5
angle C C OH1 65.0 119.0
angle C C O 65.0 119.0 ! FOR NETROPSIN
angle CH1E C N 20.0 117.5
angle CH1E C NH1 20.0 117.5
angle CH1E C O 85.0 121.5
angle CH1E C OC 85.0 117.5
angle CH1E C OH1 85.0 120.0
angle CH2E C CR1E 70.0 121.5
angle CH2E C N 20.0 117.5
angle CH2E C NH1 20.0 117.5
angle CH2E C NH2 20.0 117.5
angle CH2E C NC2 20.0 117.5 ! FOR NETROPSIN
angle CH2E C NR 60.0 116.0
angle CH2E C O 85.0 121.6
angle CH2E C OC 85.0 118.5
angle CH2E C OH1 85.0 120.0
angle CH3E C N 20.0 117.5
angle CH3E C NH1 20.0 117.5
angle CH3E C O 85.0 121.5
angle CR1E C CR1E 65.0 120.5
angle CR1E C NH1 65.0 110.5! USED ONLY IN HIS, NOT IT TRP
angle CR1E C NP 65.0 122.5
angle CR1E C NR 65.0 122.5
angle CR1E C OH1 65.0 119.0
angle CT C N 20.0 117.5
angle CT C NH1 20.0 117.5
angle CT C NH2 20.0 117.5
angle CT C O 85.0 121.5
angle CT C OC 85.0 118.5
angle CT C OH1 85.0 120.0
angle HA C NH1 40.0 120.0
angle HA C NH2 40.0 120.0
angle HA C NR 40.0 120.0
angle HA C O 85.0 121.5
angle N C O 85.0 121.0
angle NC2 C NC2 70.0 120.0
angle NC2 C NH1 70.0 120.0
angle NH1 C NR 70.0 120.0
angle NH1 C O 65.0 121.0
angle NH2 C O 65.0 121.0
angle O C OH1 85.0 120.0
angle OC C OC 85.0 122.5
angle OS C CH1E 70.0 125.3! FROM PARDNA10
angle OS C CH2E 70.0 125.3! - " -
angle OS C O 70.0 120.0! - " -
angle C CH1E CH1E 70.0 110.0
angle C CH1E CH2E 70.0 109.5
angle C CH1E CH3E 70.0 106.5
angle C CH1E N 45.0 111.6
angle C CH1E NH1 45.0 111.6
angle C CH1E NH2 45.0 111.6
angle C CH1E NH3 45.0 111.6
angle CH1E CH1E CH2E 45.0 112.5
angle CH1E CH1E CH3E 45.0 111.0
angle CH1E CH1E NH1 50.0 110.0
angle CH1E CH1E NH2 50.0 109.5
angle CH1E CH1E NH3 50.0 107.5
angle CH1E CH1E OH1 50.0 104.5
angle CH2E CH1E CH3E 50.0 111.5
angle CH2E CH1E N 65.0 104.0
angle CH2E CH1E NH1 65.0 110.0
angle CH2E CH1E NH2 65.0 110.0
angle CH2E CH1E NH3 65.0 110.0
angle CH3E CH1E CH3E 50.0 111.0
angle CH3E CH1E NH1 65.0 108.5
angle CH3E CH1E NH2 65.0 109.5
angle CH3E CH1E NH3 65.0 109.5
angle CH3E CH1E OH1 60.0 110.5
angle C CH2E CH1E 70.0 112.5
angle C CH2E CH2E 70.0 113.0
angle C CH2E NH1 70.0 111.6
angle C CH2E NH2 70.0 111.6
angle C CH2E NH3 70.0 111.6
angle CH1E CH2E CH1E 45.0 117.0
angle CH1E CH2E CH2E 45.0 112.5
angle CH1E CH2E CH3E 45.0 113.0
angle CH1E CH2E OH1 45.0 111.0
angle CH3E CH2E OH1 45.0 111.0
angle CH1E CH2E S 50.0 112.5
angle CH1E CH2E SH1E 50.0 112.5
angle CH2E CH2E CH2E 45.0 110.0
angle CH2E CH2E CH3E 45.0 111.0
angle CH2E CH2E N 65.0 105.0
angle CH2E CH2E NH1 65.0 111.0
angle CH2E CH2E NH2 65.0 109.5
angle CH2E CH2E NH3 65.0 110.5
angle CH2E CH2E S 50.0 112.5
angle C CR1E C 90.0 126.5
angle C CR1E CH2E 90.0 122.0
angle C CR1E CR1E 90.0 119.0
angle C CR1E NH1 90.0 109.5
angle C CR1E NR 90.0 106.5
angle CR1E CR1E CR1E 90.0 120.5
angle NH1 CR1E NH1 70.0 109.0
angle NH1 CR1E NR 70.0 109.0
angle C CT CT 70.0 109.5
angle C CT HA 70.0 109.5
angle C CT N 70.0 111.6
angle C CT NH1 70.0 111.6
angle C CT NH2 70.0 111.6
angle C CT NH3 70.0 111.6
angle CT CT CT 45.0 111.00
angle CT CT HA 40.0 109.50
angle CT CT N 65.0 105.00
angle CT CT NC2 65.0 110.00
angle CT CT NH1 65.0 110.00
angle CT CT NH2 65.0 110.00
angle CT CT NH3 65.0 110.00
angle CT CT OH1 50.0 109.50
angle CT CT S 50.0 112.50
angle HA CT HA 40.0 109.5
angle HA CT N 50.0 109.5
angle HA CT NC2 50.0 109.5
angle HA CT NH1 50.0 109.5
angle HA CT NH3 50.0 109.5
angle HA CT OH1 50.0 109.5
angle HA CT S 40.0 109.5
!angle FE CM OM 5.0 90.0! FROM KROEKER ET AL(1980)
angle C N CH1E 80.0 120.0
angle C N CH2E 80.0 120.0
angle C N CT 80.0 120.0
angle CH1E N CH2E 60.0 110.0
angle CH1E N CH3E 60.0 110.0
angle CH2E N CH3E 60.0 109.5
angle CT N CT 60.0 110.0
angle C NC2 CT 80.0 120.0
angle C NC2 HC 35.0 120.0
angle CT NC2 HC 35.0 120.0
angle HC NC2 HC 40.0 120.0
angle C NH1 C 60.0 102.5 ! UNUSED (AND PROBABLY WRONG)
angle C NH1 CH1E 77.5 120.0
angle C NH1 CH2E 77.5 120.0
angle C NH1 CH3E 77.5 120.0
angle C NH1 CR1E 60.0 108.0
angle C NH1 CT 80.0 120.0
angle C NH1 H 30.0 120.0
angle CH1E NH1 CH3E 60.0 120.0
angle CH1E NH1 H 35.0 120.0
angle CH2E NH1 CH3E 60.0 120.0
angle CH2E NH1 H 35.0 120.0
angle CH3E NH1 H 35.0 120.0
angle CR1E NH1 CR1E 65.0 110.0
angle CR1E NH1 H 35.0 120.0
angle CT NH1 H 35.0 120.0
angle C NH2 H 30.0 120.0
angle CH1E NH2 CH2E 60.0 120.0
angle CH1E NH2 H 35.0 120.0
angle CH2E NH2 H 35.0 120.0
angle CT NH2 H 35.0 120.0
angle H NH2 H 40.0 125.0
angle C NP C 70.0 102.5
!angle C NP FE 50.0 128.0! FORCE CONSTANT FROM PARMFIX9
angle C NR C 70.0 102.5
angle C NR CR1E 70.0 109.5
angle CH3E NR CR1E 70.0 109.5 ! FOR NETROPSIN
angle CH3E NR C 70.0 109.5 ! FOR NETROPSIN
angle CR1E NR CR1E 65.0 110.0
!angle CR1E NR FE 30.0 124.8! FORCE CONSTANT FROM PARMFIX9
angle CH1E NH3 HC 35.0 109.5
angle CH1E NH3 CH2E 35.0 109.5
angle CH2E NH3 HC 35.0 109.5
angle CT NH3 HC 35.0 109.5
angle HC NH3 HC 40.0 109.5
angle C OH1 H 50.0 109.5
angle CH1E OH1 H 35.0 109.5
angle CH2E OH1 H 35.0 109.5
angle CT OH1 H 35.0 109.5
!angle FE OM OM 0.0 180.0! DUMMY PARAMETER FOR PATCH AND ANALYSIS.
angle C OS CH3E 46.5 120.5! FROM PARDNA10
angle CH2E S CH3E 50.0 99.5! FROM PARMFIX9, CHECK WITH IR
angle CH2E S S 50.0 104.2
angle CT S CT 50.0 99.5! FORCE CONSTANTS FROM PARMFIX9
angle CT S S 50.0 104.2
angle OC S OC 85.0 109.5! FORCE CONSTANT JST A GUESS.
!angle NP FE CM 5.0 90.0
!angle NP FE NP 50.0 90.0
!angle NP FE NR 5.0 115.0
!angle NP FE OM 5.0 90.0! JUST A GUESS FROM EXISTING FE CM DATA
!angle NR FE CM 5.0 180.0
!angle NR FE OM 5.0 180.0! JUST A GUESS FROM EXISTING FE CM DATA
dihe CH1E C N CH1E 10.0 2 180.0! PRO ISOM. BARRIER 20 KCAL/MOL.
dihe CH2E C N CH1E 10.0 2 180.0
dihe CR1E C C CR1E 5.0 2 180.0! => TRP OOP. VIB 170CM 1
dihe CR1E C C C 2.5 2 180.0! SEE BEHLEN ET AL JCP 75:5685 81
dihe CR1E C C NH1 2.5 2 180.0
dihe X C CH1E X 0.0 3 0.0! FROM GELIN THESIS AMIDES
dihe X C CH2E X 0.0 3 0.0! USING A SINGLE
dihe X C CR1E X 10.0 2 180.0! DIHEDRAL PER BOND RATHER
dihe X C CT X 0.0 3 0.0! THAN MULTIPLE TORSIONS.
dihe X C N X 8.2 2 180.0! ALKANE TORSION REDUCED TO
dihe X C NC2 X 8.2 2 180.0! 1.6 FROM 1.8 TO COINCIDE WITH
dihe X C NH1 X 8.2 2 180.0! THE EXPERIMENTAL BARRIER.
dihe X C NH2 X 8.2 2 180.0
dihe X C OH1 X 1.8 2 180.0
dihe X C OS X 1.8 2 180.0 ! INFERRED FROM C-OH1
dihe X CH1E CH1E X 1.6 3 0.0
dihe X CH1E CH2E X 1.6 3 0.0
dihe X CH1E N X 0.3 3 0.0! FROM HAGLER ET AL TABULATION OF
dihe X CH1E NH1 X 0.3 3 0.0! EXP. DATA AND 6 31G CALC.
dihe X CH1E NH2 X 1.8 3 0.0! PROTONATED SECONDARY AMINE
dihe X CH1E NH3 X 0.6 3 0.0! 1/PROTON SO 3 FOR THE BOND
dihe X CH1E OH1 X 0.5 3 0.0! CHANGED TO ROUGHLY MEOH
dihe X CH2E CH2E X 1.6 3 0.0
dihe X CH2E N X 0.3 3 0.0! SEE CH1E COMMENTS
dihe X CH2E NH1 X 0.3 3 0.0
dihe X CH2E NH2 X 0.6 3 0.0
dihe X CH2E NH3 X 0.6 3 0.0
dihe X CH2E OH1 X 0.5 3 0.0
dihe X CH2E S X 1.2 2 0.0
dihe X CT CT X 1.6 3 0.0
dihe X CT N X 0.3 3 0.0! SEE CH1E COMMENTS
dihe X CT NC2 X 0.3 3 0.0
dihe X CT NH1 X 0.3 3 0.0
dihe X CT NH2 X 0.6 3 0.0
dihe X CT NH3 X 0.6 3 0.0
dihe X CT OH1 X 0.5 3 0.0
dihe X CT S X 1.2 2 0.0
!dihe X FE NR X 0.05 4 0.0
!dihe X FE CM X 0.05 4 0.0
!dihe X FE OM X 0.00 4 0.0
dihe X S S X 4.0 2 0.0! FROM EXP.R BARRI
impr C C CR1E CH2E 90.0 0 0.0!GIVE 220 CM 1 METHYL OOP FOR TOLUENE.
impr C CR1E C CH2E 90.0 0 0.0!USED HERE FOR TRP CG OUT OF PLANE
impr C CR1E CR1E CH2E 90.0 0 0.0! PHE, AND TYR CG OOP
impr C CR1E NH1 CH2E 90.0 0 0.0! HIS CG RING OOP
impr C NH1 CR1E CH2E 90.0 0 0.0!
impr C CR1E CR1E OH1 150.0 0 0.0! GIVE 249 CM 1 PHENOL OH OOP.
impr C H H NH2 45.0 0 0.0! PRIMARY AMIDES (ASN AND GLN) OOP
impr C OC OC CH1E 100.0 0 0.0! CARBOXYL OUT OF PLANE.
impr C OC OC CH2E 100.0 0 0.0!
impr C X X C 25.0 0 0.0! FROM BENZENE NORMAL MODE ANALYSIS
impr C X X CH2E 90.0 0 0.0! FROM TOLUENE METHYL OOP. 217 CM 1
impr C X X CH3E 90.0 0 0.0
impr C X X CR1E 25.0 0 0.0
impr C X X H 75.0 0 0.0! FROM BENZENE NORMAL MODE ANALYSIS
impr C X X HA 75.0 0 0.0!
impr C X X NH1 100.0 0 0.0! AMIDES FIT TO N METHYL ACETAMIDE.
impr C X X O 100.0 0 0.0
impr C X X OC 100.0 0 0.0
impr C X X OH1 150.0 0 0.0! USED FOR TYR HYDROXYL OOP
impr CH1E X X CH1E 55.0 0 35.26439! CALCULATED TO BE THE SAME AS THE 3
impr CH1E X X CH2E 55.0 0 35.26439! H CH1E X ANGLES WITH K=40
impr CH1E X X CH3E 55.0 0 35.26439
impr CR1E X X CR1E 25.0 0 0.0! EXTENDED ATOM VERSION OF BENZENE
impr CR1E X X NH1 25.0 0 0.0! SAME AS ABOVE FOR LACK OF VALUES
!impr FE X X NP 20.0 0 0.0! FROM PARMFIX9
impr H X X O 45.0 0 0.0
impr N CH1E CH2E C 45.0 0 0.0! PROLINE NITROGENS
impr N X X CH2E 45.0 0 0.0
impr N X X CT 45.0 0 0.0
impr NC2 X X CT 45.0 0 0.0
impr NC2 X X HC 45.0 0 0.0
impr NH1 X X CH1E 45.0 0 0.0
impr NH1 X X CH2E 45.0 0 0.0
impr NH1 X X CH3E 45.0 0 0.0
impr NH1 X X CT 45.0 0 0.0
impr NH1 X X H 45.0 0 0.0! AMIDES PROTON OOP
impr NH1 X X NH1 25.0 0 0.0!
impr NH1 X X NR 25.0 0 0.0
impr NH2 X X H 45.0 0 0.0
impr NR X X C 25.0 0 0.0
impr NR X X CR1E 25.0 0 0.0
impr NR X X CT 25.0 0 0.0
impr NR X X CH3E 25.0 0 0.0 ! FOR NETROPSIN
{* nonbonding parameter section *}
{* ============================ *}
! eps sigma eps(1:4) sigma(1:4)
! (kcal/mol) (A)
! ---------------------------------------
NONBonded H 0.0498 1.4254 0.0498 1.4254
NONBonded HA 0.0450 2.6157 0.0450 2.6157 !- charged group.
NONBonded HC 0.0498 1.0691 0.0498 1.0691 ! Reduced vdw radius
!
NONBonded C 0.1200 3.7418 0.1000 3.3854 ! carbonyl carbon
NONBonded CH1E 0.0486 4.2140 0.1000 3.3854 ! \
NONBonded CH2E 0.1142 3.9823 0.1000 3.3854 ! extended carbons
NONBonded CH3E 0.1811 3.8576 0.1000 3.3854 ! /
!! NONBonded CM 0.0262 4.4367 0.1000 3.3854
NONBonded CR1E 0.1200 3.7418 0.1000 3.3854 ! ring carbons
!! NONBonded CT 0.0262 4.4367 0.1000 3.3854
!
NONBonded N 0.2384 2.8509 0.2384 2.8509
NONBonded NC2 0.2384 2.8509 0.2384 2.8509
NONBonded NH1 0.2384 2.8509 0.2384 2.8509
NONBonded NH2 0.2384 2.8509 0.2384 2.8509
NONBonded NH3 0.2384 2.8509 0.2384 2.8509
NONBonded NP 0.2384 2.8509 0.2384 2.8509
NONBonded NR 0.2384 2.8509 0.2384 2.8509
!
NONBonded O 0.1591 2.8509 0.1591 2.8509
NONBonded OC 0.6469 2.8509 0.6469 2.8509
NONBonded OH1 0.1591 2.8509 0.1591 2.8509
!! NONBonded OM 0.1591 2.8509 0.1591 2.8509
NONBonded OS 0.1591 2.8509 0.1591 2.8509
!
NONBonded S 0.0430 3.3676 0.0430 3.3676
NONBonded SH1E 0.0430 3.3676 0.0430 3.3676
!
!! NONBONDED FE 0.0000 1.1582 0.0000 1.1582
set echo=true end

Просмотреть файл

@ -0,0 +1,77 @@
REMARK FILENAME="/usr/people/nonella/xplor/benchmark1/ALANIN.PDB"
REMARK PARAM11.PRO ( from PARAM6A )
REMARK ===========
REMARK PROTEIN PARAMETERS:
REMARK PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
REMARK TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
REMARK LENNARD-JONES NONBONDED PARAMETERS WITH SPECIAL TREATMENT OF 1:4
REMARK CARBON-CARBON INTERACTIONS: JORGENSON ET. AL.
REMARK JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
REMARK DATE:16-Feb-89 11:21:32 created by user: nonella
ATOM 1 CA ACE 1 -2.184 0.591 0.910 1.00 0.00 MAIN
ATOM 2 C ACE 1 -0.665 0.627 0.966 1.00 0.00 MAIN
ATOM 3 O ACE 1 -0.069 1.213 1.868 1.00 0.00 MAIN
ATOM 4 N ALA 2 0.000 0.000 0.000 1.00 0.00 MAIN
ATOM 5 H ALA 2 -0.490 -0.462 -0.712 1.00 0.00 MAIN
ATOM 6 CA ALA 2 1.450 0.000 0.000 1.00 0.00 MAIN
ATOM 7 CB ALA 2 1.969 -0.670 -1.262 1.00 0.00 MAIN
ATOM 8 C ALA 2 2.010 1.413 0.000 1.00 0.00 MAIN
ATOM 9 O ALA 2 2.911 1.748 0.767 1.00 0.00 MAIN
ATOM 10 N ALA 3 1.488 2.280 -0.863 1.00 0.00 MAIN
ATOM 11 H ALA 3 0.770 1.998 -1.467 1.00 0.00 MAIN
ATOM 12 CA ALA 3 1.981 3.643 -0.909 1.00 0.00 MAIN
ATOM 13 CB ALA 3 1.147 4.464 -1.880 1.00 0.00 MAIN
ATOM 14 C ALA 3 1.865 4.326 0.444 1.00 0.00 MAIN
ATOM 15 O ALA 3 2.801 4.963 0.924 1.00 0.00 MAIN
ATOM 16 N ALA 4 0.710 4.211 1.093 1.00 0.00 MAIN
ATOM 17 H ALA 4 -0.026 3.700 0.697 1.00 0.00 MAIN
ATOM 18 CA ALA 4 0.541 4.841 2.388 1.00 0.00 MAIN
ATOM 19 CB ALA 4 -0.809 4.462 2.976 1.00 0.00 MAIN
ATOM 20 C ALA 4 1.591 4.371 3.381 1.00 0.00 MAIN
ATOM 21 O ALA 4 2.212 5.167 4.085 1.00 0.00 MAIN
ATOM 22 N ALA 5 1.818 3.063 3.463 1.00 0.00 MAIN
ATOM 23 H ALA 5 1.315 2.443 2.895 1.00 0.00 MAIN
ATOM 24 CA ALA 5 2.809 2.556 4.392 1.00 0.00 MAIN
ATOM 25 CB ALA 5 2.970 1.055 4.209 1.00 0.00 MAIN
ATOM 26 C ALA 5 4.176 3.170 4.142 1.00 0.00 MAIN
ATOM 27 O ALA 5 4.859 3.615 5.064 1.00 0.00 MAIN
ATOM 28 N ALA 6 4.611 3.212 2.886 1.00 0.00 MAIN
ATOM 29 H ALA 6 4.055 2.853 2.163 1.00 0.00 MAIN
ATOM 30 CA ALA 6 5.908 3.786 2.586 1.00 0.00 MAIN
ATOM 31 CB ALA 6 6.121 3.830 1.082 1.00 0.00 MAIN
ATOM 32 C ALA 6 6.012 5.221 3.079 1.00 0.00 MAIN
ATOM 33 O ALA 6 6.992 5.614 3.710 1.00 0.00 MAIN
ATOM 34 N ALA 7 5.002 6.040 2.802 1.00 0.00 MAIN
ATOM 35 H ALA 7 4.228 5.711 2.297 1.00 0.00 MAIN
ATOM 36 CA ALA 7 5.044 7.419 3.245 1.00 0.00 MAIN
ATOM 37 CB ALA 7 3.730 8.110 2.918 1.00 0.00 MAIN
ATOM 38 C ALA 7 5.219 7.518 4.752 1.00 0.00 MAIN
ATOM 39 O ALA 7 6.045 8.278 5.255 1.00 0.00 MAIN
ATOM 40 N ALA 8 4.445 6.748 5.512 1.00 0.00 MAIN
ATOM 41 H ALA 8 3.792 6.148 5.096 1.00 0.00 MAIN
ATOM 42 CA ALA 8 4.566 6.799 6.956 1.00 0.00 MAIN
ATOM 43 CB ALA 8 3.670 5.747 7.589 1.00 0.00 MAIN
ATOM 44 C ALA 8 5.984 6.488 7.409 1.00 0.00 MAIN
ATOM 45 O ALA 8 6.560 7.186 8.241 1.00 0.00 MAIN
ATOM 46 N ALA 9 6.582 5.429 6.871 1.00 0.00 MAIN
ATOM 47 H ALA 9 6.109 4.882 6.209 1.00 0.00 MAIN
ATOM 48 CA ALA 9 7.934 5.082 7.264 1.00 0.00 MAIN
ATOM 49 CB ALA 9 8.436 3.918 6.425 1.00 0.00 MAIN
ATOM 50 C ALA 9 8.898 6.233 7.027 1.00 0.00 MAIN
ATOM 51 O ALA 9 9.705 6.584 7.887 1.00 0.00 MAIN
ATOM 52 N ALA 10 8.839 6.851 5.851 1.00 0.00 MAIN
ATOM 53 H ALA 10 8.190 6.560 5.176 1.00 0.00 MAIN
ATOM 54 CA ALA 10 9.733 7.956 5.567 1.00 0.00 MAIN
ATOM 55 CB ALA 10 9.388 8.570 4.219 1.00 0.00 MAIN
ATOM 56 C ALA 10 9.595 9.067 6.595 1.00 0.00 MAIN
ATOM 57 O ALA 10 10.580 9.587 7.117 1.00 0.00 MAIN
ATOM 58 N ALA 11 8.364 9.460 6.912 1.00 0.00 MAIN
ATOM 59 H ALA 11 7.590 9.036 6.488 1.00 0.00 MAIN
ATOM 60 CA ALA 11 8.169 10.516 7.887 1.00 0.00 MAIN
ATOM 61 CB ALA 11 6.686 10.695 8.168 1.00 0.00 MAIN
ATOM 62 C ALA 11 8.823 10.177 9.217 1.00 0.00 MAIN
ATOM 63 O ALA 11 9.523 10.992 9.815 1.00 0.00 MAIN
ATOM 64 N CBX 12 8.610 8.962 9.714 1.00 0.00 MAIN
ATOM 65 H CBX 12 8.050 8.324 9.225 1.00 0.00 MAIN
ATOM 66 CA CBX 12 9.223 8.571 11.014 1.00 0.00 MAIN
END

Просмотреть файл

@ -0,0 +1,206 @@
PSF
11 !NTITLE
REMARKS FILENAME="/usr/people/nonella/xplor/benchmark1/ALANIN.PSF"
REMARKS PARAM11.PRO ( from PARAM6A )
REMARKS ===========
REMARKS PROTEIN PARAMETERS:
REMARKS PEPTIDE GEOMETRY FROM RAMACHANDRAN ET AL BBA 359:298 (1974)
REMARKS TORSIONS FROM HAGLER ET AL JACS 98:4600 (1976)
REMARKS LENNARD-JONES NONBONDED PARAMETERS WITH SPECIAL TREATMENT OF 1:4
REMARKS CARBON-CARBON INTERACTIONS: JORGENSON ET. AL.
REMARKS JACS 103:3976-3985 WITH 1-4 RC=1.80/0.1
REMARKS
REMARKS DATE:16-Feb-89 11:21:29 created by user: nonella
66 !NATOM
1 MAIN 1 ACE CA CH3E 0.000000E+00 15.0350 0
2 MAIN 1 ACE C C 0.450000 12.0110 0
3 MAIN 1 ACE O O -0.450000 15.9994 0
4 MAIN 2 ALA N NH1 -0.350000 14.0067 0
5 MAIN 2 ALA H H 0.250000 1.00800 0
6 MAIN 2 ALA CA CH1E 0.100000 13.0190 0
7 MAIN 2 ALA CB CH3E 0.000000E+00 15.0350 0
8 MAIN 2 ALA C C 0.450000 12.0110 0
9 MAIN 2 ALA O O -0.450000 15.9994 0
10 MAIN 3 ALA N NH1 -0.350000 14.0067 0
11 MAIN 3 ALA H H 0.250000 1.00800 0
12 MAIN 3 ALA CA CH1E 0.100000 13.0190 0
13 MAIN 3 ALA CB CH3E 0.000000E+00 15.0350 0
14 MAIN 3 ALA C C 0.450000 12.0110 0
15 MAIN 3 ALA O O -0.450000 15.9994 0
16 MAIN 4 ALA N NH1 -0.350000 14.0067 0
17 MAIN 4 ALA H H 0.250000 1.00800 0
18 MAIN 4 ALA CA CH1E 0.100000 13.0190 0
19 MAIN 4 ALA CB CH3E 0.000000E+00 15.0350 0
20 MAIN 4 ALA C C 0.450000 12.0110 0
21 MAIN 4 ALA O O -0.450000 15.9994 0
22 MAIN 5 ALA N NH1 -0.350000 14.0067 0
23 MAIN 5 ALA H H 0.250000 1.00800 0
24 MAIN 5 ALA CA CH1E 0.100000 13.0190 0
25 MAIN 5 ALA CB CH3E 0.000000E+00 15.0350 0
26 MAIN 5 ALA C C 0.450000 12.0110 0
27 MAIN 5 ALA O O -0.450000 15.9994 0
28 MAIN 6 ALA N NH1 -0.350000 14.0067 0
29 MAIN 6 ALA H H 0.250000 1.00800 0
30 MAIN 6 ALA CA CH1E 0.100000 13.0190 0
31 MAIN 6 ALA CB CH3E 0.000000E+00 15.0350 0
32 MAIN 6 ALA C C 0.450000 12.0110 0
33 MAIN 6 ALA O O -0.450000 15.9994 0
34 MAIN 7 ALA N NH1 -0.350000 14.0067 0
35 MAIN 7 ALA H H 0.250000 1.00800 0
36 MAIN 7 ALA CA CH1E 0.100000 13.0190 0
37 MAIN 7 ALA CB CH3E 0.000000E+00 15.0350 0
38 MAIN 7 ALA C C 0.450000 12.0110 0
39 MAIN 7 ALA O O -0.450000 15.9994 0
40 MAIN 8 ALA N NH1 -0.350000 14.0067 0
41 MAIN 8 ALA H H 0.250000 1.00800 0
42 MAIN 8 ALA CA CH1E 0.100000 13.0190 0
43 MAIN 8 ALA CB CH3E 0.000000E+00 15.0350 0
44 MAIN 8 ALA C C 0.450000 12.0110 0
45 MAIN 8 ALA O O -0.450000 15.9994 0
46 MAIN 9 ALA N NH1 -0.350000 14.0067 0
47 MAIN 9 ALA H H 0.250000 1.00800 0
48 MAIN 9 ALA CA CH1E 0.100000 13.0190 0
49 MAIN 9 ALA CB CH3E 0.000000E+00 15.0350 0
50 MAIN 9 ALA C C 0.450000 12.0110 0
51 MAIN 9 ALA O O -0.450000 15.9994 0
52 MAIN 10 ALA N NH1 -0.350000 14.0067 0
53 MAIN 10 ALA H H 0.250000 1.00800 0
54 MAIN 10 ALA CA CH1E 0.100000 13.0190 0
55 MAIN 10 ALA CB CH3E 0.000000E+00 15.0350 0
56 MAIN 10 ALA C C 0.450000 12.0110 0
57 MAIN 10 ALA O O -0.450000 15.9994 0
58 MAIN 11 ALA N NH1 -0.350000 14.0067 0
59 MAIN 11 ALA H H 0.250000 1.00800 0
60 MAIN 11 ALA CA CH1E 0.100000 13.0190 0
61 MAIN 11 ALA CB CH3E 0.000000E+00 15.0350 0
62 MAIN 11 ALA C C 0.450000 12.0110 0
63 MAIN 11 ALA O O -0.450000 15.9994 0
64 MAIN 12 CBX N NH1 -0.350000 14.0067 0
65 MAIN 12 CBX H H 0.250000 1.00800 0
66 MAIN 12 CBX CA CH3E 0.100000 15.0350 0
65 !NBOND: bonds
1 2 2 3 4 6 6 8
8 9 4 5 6 7 2 4
10 12 12 14 14 15 10 11
12 13 8 10 16 18 18 20
20 21 16 17 18 19 14 16
22 24 24 26 26 27 22 23
24 25 20 22 28 30 30 32
32 33 28 29 30 31 26 28
34 36 36 38 38 39 34 35
36 37 32 34 40 42 42 44
44 45 40 41 42 43 38 40
46 48 48 50 50 51 46 47
48 49 44 46 52 54 54 56
56 57 52 53 54 55 50 52
58 60 60 62 62 63 58 59
60 61 56 58 64 66 64 65
62 64
96 !NTHETA: angles
1 2 3 4 6 8 6 4 5
4 6 7 6 8 9 8 6 7
1 2 4 3 2 4 2 4 6
2 4 5 10 12 14 12 10 11
10 12 13 12 14 15 14 12 13
6 8 10 9 8 10 8 10 12
8 10 11 16 18 20 18 16 17
16 18 19 18 20 21 20 18 19
12 14 16 15 14 16 14 16 18
14 16 17 22 24 26 24 22 23
22 24 25 24 26 27 26 24 25
18 20 22 21 20 22 20 22 24
20 22 23 28 30 32 30 28 29
28 30 31 30 32 33 32 30 31
24 26 28 27 26 28 26 28 30
26 28 29 34 36 38 36 34 35
34 36 37 36 38 39 38 36 37
30 32 34 33 32 34 32 34 36
32 34 35 40 42 44 42 40 41
40 42 43 42 44 45 44 42 43
36 38 40 39 38 40 38 40 42
38 40 41 46 48 50 48 46 47
46 48 49 48 50 51 50 48 49
42 44 46 45 44 46 44 46 48
44 46 47 52 54 56 54 52 53
52 54 55 54 56 57 56 54 55
48 50 52 51 50 52 50 52 54
50 52 53 58 60 62 60 58 59
58 60 61 60 62 63 62 60 61
54 56 58 57 56 58 56 58 60
56 58 59 66 64 65 60 62 64
63 62 64 62 64 66 62 64 65
31 !NPHI: dihedrals
2 4 6 8 1 2 4 6
8 10 12 14 4 6 8 10
6 8 10 12 14 16 18 20
10 12 14 16 12 14 16 18
20 22 24 26 16 18 20 22
18 20 22 24 26 28 30 32
22 24 26 28 24 26 28 30
32 34 36 38 28 30 32 34
30 32 34 36 38 40 42 44
34 36 38 40 36 38 40 42
44 46 48 50 40 42 44 46
42 44 46 48 50 52 54 56
46 48 50 52 48 50 52 54
56 58 60 62 52 54 56 58
54 56 58 60 58 60 62 64
60 62 64 66
32 !NIMPHI: impropers
6 4 8 7 2 1 4 3
4 2 6 5 12 10 14 13
8 6 10 9 10 8 12 11
18 16 20 19 14 12 16 15
16 14 18 17 24 22 26 25
20 18 22 21 22 20 24 23
30 28 32 31 26 24 28 27
28 26 30 29 36 34 38 37
32 30 34 33 34 32 36 35
42 40 44 43 38 36 40 39
40 38 42 41 48 46 50 49
44 42 46 45 46 44 48 47
54 52 56 55 50 48 52 51
52 50 54 53 60 58 62 61
56 54 58 57 58 56 60 59
62 60 64 63 64 62 66 65
11 !NDON: donors
4 5 10 11 16 17 22 23
28 29 34 35 40 41 46 47
52 53 58 59 64 65
11 !NACC: acceptors
3 2 9 8 15 14 21 20
27 26 33 32 39 38 45 44
51 50 57 56 63 62
0 !NNB
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0
33 0 !NGRP
0 0 0 1 0 0 3 0 0
6 0 0 7 0 0 9 0 0
12 0 0 13 0 0 15 0 0
18 0 0 19 0 0 21 0 0
24 0 0 25 0 0 27 0 0
30 0 0 31 0 0 33 0 0
36 0 0 37 0 0 39 0 0
42 0 0 43 0 0 45 0 0
48 0 0 49 0 0 51 0 0
54 0 0 55 0 0 57 0 0
60 0 0 61 0 0 63 0 0

Просмотреть файл

@ -0,0 +1,24 @@
# shared simulation options for replica exchange
timestep 1.0
structure alanin.psf
coordinates alanin.pdb
margin 10.0
stepspercycle 100
parameters alanin.params
exclude scaled1-4
1-4scaling 0.4
switching on
switchdist 7.0
cutoff 8.0
pairlistdist 10.0
colvars on
colvarsConfig colvars.conf
langevin on
langevinDamping 10.0
langevinTemp $temperature

Просмотреть файл

@ -0,0 +1,22 @@
colvarsTrajFrequency 200
colvar {
name length
distance {
group1 {
atomNumbers 1
}
group2 {
atomNumbers 66
}
}
}
harmonic {
name lenpot
colvars length
centers 17.0
forceConstant 1.0
}

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,3 @@
# NAMD extended system configuration output file
#$LABELS step o_x o_y o_z
1000 0 0 0

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,3 @@
# NAMD extended system configuration output file
#$LABELS step o_x o_y o_z
2000 0 0 0

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше