add node files
This commit is contained in:
Родитель
09ee4981fd
Коммит
9c34fcfa5a
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Communicators.LinuxCommunicator.dll
Normal file
Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Communicators.LinuxCommunicator.dll
Normal file
Двоичный файл не отображается.
Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Communicators.LinuxCommunicator.pdb
Normal file
Двоичные данные
Documents/ConfigureLinux/Microsoft.Hpc.Communicators.LinuxCommunicator.pdb
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 '{0}' 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>
|
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
|
@ -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>
|
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
|
@ -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,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
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -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
|
||||
}
|
||||
|
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.0.coor
Normal file
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.0.coor
Normal file
Двоичный файл не отображается.
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.0.vel
Normal file
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.0.vel
Normal file
Двоичный файл не отображается.
|
@ -0,0 +1,3 @@
|
|||
# NAMD extended system configuration output file
|
||||
#$LABELS step o_x o_y o_z
|
||||
1000 0 0 0
|
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.1.coor
Normal file
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.1.coor
Normal file
Двоичный файл не отображается.
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.1.vel
Normal file
Двоичные данные
Documents/LinuxNodeFiles/namd/lib/replica/umbrella/input/alanin.initial.1.vel
Normal file
Двоичный файл не отображается.
|
@ -0,0 +1,3 @@
|
|||
# NAMD extended system configuration output file
|
||||
#$LABELS step o_x o_y o_z
|
||||
2000 0 0 0
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче