[svn-genapp] r1705 - in rotdif: . bin files modules

svn@...
 

Author: yuexi
Date: Sun Aug 4 15:26:06 2019
New Revision: 1705

Log:
finish ellipsoid

Added:
rotdif/bin/ELM_ellipsoid.py
rotdif/bin/get_ellipsoid.py
rotdif/bin/get_elm_tensor.py
rotdif/files/acknowledgements.html (contents, props changed)
rotdif/files/disclaimer.html (contents, props changed)
Deleted:
rotdif/files/acknowledgements_my.html
rotdif/files/official_disclaimer_my.html
rotdif/files/welcome_my.html
Modified:
rotdif/appconfig.json
rotdif/bin/elmdock_split.py
rotdif/bin/main_elm.py
rotdif/bin/main_elmdock.py
rotdif/bin/main_rotdif.py
rotdif/bin/run_rotdif.py
rotdif/bin/run_rotdif_elmdock.py
rotdif/bin/save_dock.py
rotdif/bin/save_dock_elmdock.py
rotdif/directives.json
rotdif/files/tutorial.html
rotdif/menu.json
rotdif/modules/acknowledgements.json
rotdif/modules/disclaimer.json
rotdif/modules/elm.json
rotdif/modules/elmdock.json
rotdif/modules/rotdif_all.json

Modified: rotdif/appconfig.json
==============================================================================
--- rotdif/appconfig.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/appconfig.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -1,22 +1,22 @@
{
+ "hostip" : "129.114.17.103",
"resourcedefault" : "local",
- "lockdir" : "/src/genapp/etc",
- "resources" : {
- "local" : ""
- },
"messaging" : {
- "udpport" : 30779,
- "tcphostip" : "127.0.0.1",
- "tcptimeout" : "30",
- "udphostip" : "127.0.0.1",
"wsport" : "30777",
"wssport" : "80",
+ "udphostip" : "127.0.0.1",
+ "udpport" : 30779,
+ "tcpport" : "30780",
"zmqhostip" : "127.0.0.1",
"zmqport" : "30778",
- "tcpport" : "30780",
- "tcprport" : "30781"
+ "tcphostip" : "127.0.0.1",
+ "tcprport" : "30781",
+ "tcptimeout" : "30"
},
- "hostip" : "129.114.16.180",
+ "lockdir" : "/src/genapp/etc",
"submitpolicy" : "login",
- "hostname" : "rotdif.genapp.rocks"
+ "hostname" : "rotdif.genapp.rocks",
+ "resources" : {
+ "local" : ""
+ }
}

Added: rotdif/bin/ELM_ellipsoid.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ rotdif/bin/ELM_ellipsoid.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -0,0 +1,72 @@
+# Draw a rotated ellipsoid, given the values of center of mass, semiaxes, and eigenvectors
+# written by Matthew Casertano and David Fushman, University of Maryland, June 2019
+from pymol.cgo import BEGIN, COLOR, TRIANGLES, VERTEX, NORMAL, END
+from pymol import cmd
+
+def sin (theta): return math.sin(math.radians(theta)) # sine of an angle in degree form
+def cos (theta): return math.cos(math.radians(theta)) # cosine of an angle in degree form
+
+
+def ellipsoid(cmx, cmy, cmz, a1, a2, a3, u, v, R11, R12, R13, R21, R22, R23, R31, R32, R33):
+
+ #coordinates of ellipsoid points and the normals in the ellipsoid coordinate frame
+ x0 = a1 * cos(u) * cos(v)
+ y0 = a2 * cos(u) * sin(v)
+ z0 = a3 * sin(u)
+
+ nx0 = x0 / (a1 ** 2)
+ ny0 = y0 / (a2 ** 2)
+ nz0 = z0 / (a3 ** 2)
+
+ #rotate the coordinates of ellipsoid points and the normals into the protein coordinate frame
+ #and shift the center of ellipsoid to coincide with the COM of the protein molecule
+
+ x = x0 * R11 + y0 * R12 + z0 * R13 + cmx
+ y = x0 * R21 + y0 * R22 + z0 * R23 + cmy
+ z = x0 * R31 + y0 * R32 + z0 * R33 + cmz
+
+ nx = nx0 * R11 + ny0 * R12 + nz0 * R13
+ ny = nx0 * R21 + ny0 * R22 + nz0 * R23
+ nz = nx0 * R31 + ny0 * R32 + nz0 * R33
+
+ return x, y, z, nx, ny, nz
+
+def makeEllipsoid(color, cmx, cmy, cmz, a1, a2, a3, u1, u2, v1, v2, u_segs, v_segs, R11, R12, R13, R21, R22, R23, R31, R32, R33):
+
+ r, g, b = color
+
+ # Calculate delta variables
+ dU = (u2 - u1) / u_segs
+ dV = (v2 - v1) / v_segs
+
+ o = [BEGIN, TRIANGLES]
+
+ U = u1
+ for Y in range(0, u_segs):
+ # Initialize variables for loop
+ V = v1
+ for X in range(0, v_segs):
+ x, y, z, nx, ny, nz = [0] * 5, [0] * 5, [0] * 5, [0] * 5, [0] * 5, [0] * 5 # this allows the array to be filled
+ for i in range(1, 5): # creates four sets of ellipsoid points and normals, indexed from 1 through 4
+ x[i], y[i], z[i], nx[i], ny[i], nz[i] = ellipsoid(cmx, cmy, cmz, a1, a2, a3, U + dU * (i == 2 or i == 3), V + dV * (i == 3 or i == 4), R11, R12, R13, R21, R22, R23, R31, R32, R33)
+ for i in (1, 2, 4, 2, 3, 4): # extends the output list with the new points
+ o.extend([COLOR, r, g, b, NORMAL, nx[i], ny[i], nz[i], VERTEX, x[i], y[i], z[i]])
+
+ # Update variables for next loop
+ V += dV
+ # Update variables for next loop
+ U += dU
+ o.append(END)
+ return o
+
+def drawEllipsoid(color, cmx, cmy, cmz, a1, a2, a3, R11, R12, R13, R21, R22, R23, R31, R32, R33):
+ return makeEllipsoid(color, cmx, cmy, cmz, a1, a2, a3, -90, 90, -180, 180, 10, 10,
+ R11, R12, R13, R21, R22, R23, R31, R32, R33)
+
+def rotationMatrix(rotationInput): #Elements of the rotation matrix R = transpose of the rotation matrix defined in Arfken's book
+ if (len (rotationInput)) == 9: return rotationInput # simply return input if it is already a matrix
+ a, b, g = rotationInput[0], rotationInput[1], rotationInput[2]
+ R11, R12, R13 = cos(g) * cos(b) * cos(a) - sin(g) * sin(a), -sin(g) * cos(b) * cos(a) - cos(g) * sin(a), sin(b) * cos(a)
+ R21, R22, R23 = cos(g) * cos(b) * sin(a) + sin(g) * cos(a), -sin(g) * cos(b) * sin(a) + cos(g) * cos(a), sin(b) * sin(a)
+ R31, R32, R33 = -cos(g) * sin(b), sin(g) * sin(b), cos(b)
+ return R11, R12, R13, R21, R22, R23, R31, R32, R33

Modified: rotdif/bin/elmdock_split.py
==============================================================================
--- rotdif/bin/elmdock_split.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/elmdock_split.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -5,7 +5,7 @@


def split_data(dyna_flag, elm_flag, elmdock_flag):
- with open('elmdock_log.out') as in_f:
+ with open('elmdock_results.out') as in_f:
all_txt = in_f.read().splitlines()
#get the lines
dock_start = 0

Added: rotdif/bin/get_ellipsoid.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ rotdif/bin/get_ellipsoid.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -0,0 +1,108 @@
+import re
+import os, fnmatch
+import math
+
+def calc_mass(pdb_file):
+ '''
+ input: pdb file
+ output: center of mass, 3 coordinates, unit: Angstrom
+ '''
+ with open(pdb_file) as in_f:
+ tmp = in_f.readlines()
+ ori_x = 0
+ ori_y = 0
+ ori_z = 0
+ count = 0
+ for j in range(len(tmp)):
+ if tmp[j].startswith('ATOM'):
+ count += 1
+ if count == 1:
+ start_ind = j
+ start_tmp = tmp[j]
+ start_str = ''.join(start_tmp)
+ start_str = " ".join(start_str.split())
+ start_ls = start_str.split(" ")
+ start_atm = [float(start_ls[6]), float(start_ls[7]), float(start_ls[8])]
+ tmp_str = ''.join(tmp[j])
+ tmp_str = " ".join(tmp_str.split())
+ tmp_ls = tmp_str.split(" ")
+ ori_x += float(tmp_ls[6])
+ ori_y += float(tmp_ls[7])
+ ori_z += float(tmp_ls[8])
+ end_tmp = tmp[start_ind + count-1]
+ end_str = ''.join(end_tmp)
+ end_str = " ".join(end_str.split())
+ end_ls = end_str.split(" ")
+ end_atm = [float(end_ls[6]), float(end_ls[7]), float(end_ls[8])]
+ #calculate the protein diameter to get the scale factor
+ diameter = 0
+ for i in range(3):
+ diameter += (start_atm[i] - end_atm[i])**2
+ math.sqrt(diameter)
+ ori_x = ori_x / count
+ ori_y = ori_y / count
+ ori_z = ori_z / count
+
+ return ori_x, ori_y, ori_z, diameter
+
+def angle_axe(elm_prediction, diameter):
+ '''
+ input: ELM prediction file
+ output: 1) 3 ellipsoid semiaxes
+ 2) 3 Euler angles (unit: degree)
+ '''
+ with open(elm_prediction) as in_f:
+ tmp = in_f.readlines()
+ for i in range(len(tmp)):
+ if tmp[i].startswith('Dx'):
+ dx = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ if tmp[i].startswith('Dy'):
+ dy = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ if tmp[i].startswith('Dz'):
+ dz = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ if tmp[i].startswith('alpha'):
+ alpha = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ if tmp[i].startswith('beta'):
+ beta = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ if tmp[i].startswith('gamma'):
+ gamma = [float(it) for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i])][0]
+ diameter = diameter * 0.025
+ new_dz = diameter
+ new_dy = diameter * dy / dz
+ new_dx = diameter * dx / dz
+ return new_dx, new_dy, new_dz, alpha, beta, gamma
+
+def find(name, path):
+ for root, dirs, files in os.walk(path):
+ if name in files:
+ return os.path.join(root, name)
+
+def find_n(pattern, path):
+ result = []
+ for root, dirs, files in os.walk(path):
+ for name in files:
+ if fnmatch.fnmatch(name, pattern):
+ result.append(os.path.join(root, name))
+ return result
+
+def run_elli(base_dir):
+ # Input:
+ pdb_file = find_n("*.pdb",base_dir)[0]
+ elm_prediction = find("ELM_prediction",base_dir)
+ # 1. Center of Mass of the molecule
+ cmx, cmy, cmz, diameter = calc_mass(pdb_file)
+ #2. Ellipsoid Semiaxes (in A)
+ #Rotation Input: three euler angles: alpha, beta, gamma (in degrees)
+ a1, a2, a3, deg1,deg2,deg3 = angle_axe(elm_prediction, diameter)
+ rotationInput = [deg1, deg2, deg3]
+ color = [0.85, 0.85, 1.00]
+ all_ls = [cmx, cmy, cmz, diameter, a1, a2, a3, deg1, deg2, deg3, deg1, deg2, deg3]
+ to_append = "\ncolor = [0.85, 0.85, 1.00]\ncmx, cmy, cmz, diameter = %0.3f, %0.3f, %0.3f, %0.3f\n\
+a1, a2, a3, deg1,deg2,deg3 = %0.3f, %0.3f, %0.3f, %0.3f, %0.3f, %0.3f\n\
+rotationInput = [%0.3f, %0.3f, %0.3f]\n\
+tmp = drawEllipsoid(color, cmx, cmy, cmz, a1, a2, a3, *rotationMatrix(rotationInput))\n\
+cmd.load_cgo(tmp, 'ellipsoid-cgo')\n\
+cmd.set('cgo_transparency', 0.5, 'ellipsoid-cgo')\n"%(cmx, cmy, cmz, diameter, a1, a2, a3, deg1, deg2, deg3, deg1, deg2, deg3)
+
+ with open("ELM_ellipsoid.py","a") as out_f:
+ out_f.write(to_append)

Added: rotdif/bin/get_elm_tensor.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ rotdif/bin/get_elm_tensor.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -0,0 +1,56 @@
+import re
+import operator
+
+def elm_tensor(pdb, scale=10):
+ with open('ELM_prediction') as in_f:
+ tmp = in_f.readlines()
+ for i in range(len(tmp)):
+ if tmp[i].startswith('====Diffusion Tensor Sorted Eigendecomposition===='):
+ row_dx = [float(it)*scale for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i+1])[:3]]
+ row_dy = [float(it)*scale for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i+2])[:3]]
+ row_dz = [float(it)*scale for it in re.findall(r"[-+]?\d*\.\d+|[-+]?\d+",tmp[i+3])[:3]]
+ dx = [row_dx[0],row_dy[0],row_dz[0]]
+ dy = [row_dx[1],row_dy[1],row_dz[1]]
+ dz = [row_dx[2],row_dy[2],row_dz[2]]
+ with open(pdb) as in_f2:
+ tmp2 = in_f2.readlines()
+ ori_x = 0
+ ori_y = 0
+ ori_z = 0
+ count = 0
+ for j in range(len(tmp2)):
+ if tmp2[j].startswith('ATOM'):
+ count += 1
+ tmp_str = ''.join(tmp2[j])
+ tmp_str = " ".join(tmp_str.split())
+ tmp_ls = tmp_str.split(" ")
+ ori_x += float(tmp_ls[6])
+ ori_y += float(tmp_ls[7])
+ ori_z += float(tmp_ls[8])
+
+ ori_x = ori_x / count
+ ori_y = ori_y / count
+ ori_z = ori_z / count
+ ori_coor = [ori_x, ori_y, ori_z]
+ dx_1 = list(map(operator.sub, ori_coor , dx ))
+ dx_2 = list(map(operator.add, ori_coor , dx ))
+ dy_1 = list(map(operator.sub, ori_coor , dy ))
+ dy_2 = list(map(operator.add, ori_coor , dy ))
+ dz_1 = list(map(operator.sub, ori_coor , dz ))
+ dz_2 = list(map(operator.add, ori_coor , dz ))
+ all_x = [str(i) for i in dx_1+dx_2]
+ all_y = [str(i) for i in dy_1+dy_2]
+ all_z = [str(i) for i in dz_1+dz_2]
+ obj = "[ CYLINDER, %s, 0.2, 1.0, 1.0, 1.0, 1.0, 0.0, 0.,\
+ CYLINDER, %s, 0.2, 1.0, 1.0, 1.0, 0., 1.0, 0.,\
+ CYLINDER, %s,0.2, 1.0, 1.0, 1.0, 0., 0.0, 1.0,]" % (','.join(all_x), ','.join(all_y), ','.join(all_z))
+
+ with open('ELM_tensor_axes.py','w') as out_f:
+ out_f.write("""# axes plot script
+from pymol.cgo import *
+from pymol import cmd
+from pymol.vfont import plain
+#create the axes object, draw axes with cylinders colored red (Dx), green (Dy), blue (Dz) \n""" +
+"obj = " + obj +
+"""\n # then we load it into PyMOL \n
+cmd.load_cgo(obj,'out_ani')""")

Modified: rotdif/bin/main_elm.py
==============================================================================
--- rotdif/bin/main_elm.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/main_elm.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -27,6 +27,7 @@
from os.path import join
import shutil
from get_elm_tensor import elm_tensor
+from get_ellipsoid import run_elli

def message_box(text,icon):

@@ -35,7 +36,7 @@
_message['text'] = text

UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP

@@ -59,7 +60,7 @@
#Pdbfilename = os.path.basename(PdbStr)
## UDP messaging ##################################################
UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_dict={}
socket_dict['_uuid'] = json_variables['_uuid']
@@ -181,6 +182,8 @@
#save elm
#elm_out = [join(str(base_dir),join(sub_dir,'ELM_prediction'))]
#save params
+ #copy template
+ shutil.copy("/opt/genapp/rotdif/bin/ELM_ellipsoid.py",join(str(base_dir),join(sub_dir,"ELM_ellipsoid.py")))
with open(join(str(base_dir),join(sub_dir,"all_prediction"))) as in_f:
tmp = in_f.readlines()
tmp[0]="Parameters\n"
@@ -196,5 +199,7 @@
output_res['elm_params'] = elm_params
pdb = join(str(base_dir),join(sub_dir,Pdbfilename))
elm_tensor(pdb)
- output_res['elm_tensor'] = [join(str(base_dir), join(sub_dir,'ELM_tensor.py'))]
+ output_res['elm_tensor'] = [join(str(base_dir), join(sub_dir,'ELM_tensor_axes.py'))]
+ run_elli(join(str(base_dir), sub_dir))
+ output_res['elm_ellipsoid'] = [join(str(base_dir), join(sub_dir,'ELM_ellipsoid.py'))]
print(json.dumps(output_res))

Modified: rotdif/bin/main_elmdock.py
==============================================================================
--- rotdif/bin/main_elmdock.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/main_elmdock.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -84,7 +84,7 @@
save_dock(dyna_flag, elm_flag, elmdock_flag)
output_res[ 'elmdock_out' ] = [join(str(base_dir),join(sub_dir,'elmdock_transformations.out'))]
output_res[ 'pdb'] = [join(str(base_dir), join(sub_dir,'out_dock.pdb'))]
- view_pdb = join(str(base_dir), join(sub_dir,'elmdock_structures.pdb'))
+ view_pdb = join(str(base_dir), join(sub_dir,'out_dock.pdb'))
output_res['outputpdb'] = { "file" : view_pdb, "script" : "ribbon ONLY" }

output_res[ 'outputrotdif' ] = [join(str(base_dir), join(sub_dir,'elmdock_results.out'))]

Modified: rotdif/bin/main_rotdif.py
==============================================================================
--- rotdif/bin/main_rotdif.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/main_rotdif.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -71,9 +71,9 @@
output_res, base_dir, dyna_flag, elm_flag, elmdock_flag = rotdif(to_dock,old_pdb,old_relax,sub_dir)
exp_graph,exp_keys,exp_resi,dyna_resi = exp_plot(color_list, dyna_flag, elm_flag, elmdock_flag,old_relax)
outputmd_arr_files = []
- log_out = [join(str(base_dir),join(sub_dir,'rotdif_results.out'))]
- ani_out = [join(str(base_dir),join(sub_dir, 'tensor_axes_full.py'))]
- axi_out = [join(str(base_dir),join(sub_dir, 'tensor_axes_axial.py'))]
+ log_out = [join(str(base_dir),join(sub_dir,'rotdif_log.out'))]
+ ani_out = [join(str(base_dir),join(sub_dir, 'out_ani.py'))]
+ axi_out = [join(str(base_dir),join(sub_dir, 'out_axial.py'))]

if dyna_flag == True:
output_res[ 'diso_plot' ] = diso_plot(color_list, exp_keys, to_dock, dyna_flag, elm_flag, elmdock_flag)

Modified: rotdif/bin/run_rotdif.py
==============================================================================
--- rotdif/bin/run_rotdif.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/run_rotdif.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -33,7 +33,7 @@
_message['text'] = text

UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP

@@ -60,7 +60,7 @@
#Pdbfilename = os.path.basename(PdbStr)
## UDP messaging ##################################################
UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_dict={}
socket_dict['_uuid'] = json_variables['_uuid']
@@ -116,7 +116,7 @@
ProcessRotdif = subprocess.Popen( ProcessToCallRotdif,stdout=slave_rotdif,stdin=PIPE,bufsize=0,close_fds=True)
stdout_rotdif = os.fdopen(master_rotdif, 'r', 0)
rotdif_log = open('rotdif_log.out','w')
- path_to_live_log = join(str(base_dir),join(sub_dir,'rotdif_log.out'))
+ path_to_live_log = join(str(base_dir),'rotdif_log.out')
error_string_md = ''
timeout = 4 # seconds


Modified: rotdif/bin/run_rotdif_elmdock.py
==============================================================================
--- rotdif/bin/run_rotdif_elmdock.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/run_rotdif_elmdock.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -34,7 +34,7 @@
_message['text'] = text

UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP

@@ -65,7 +65,7 @@
#os.chdir(sub_dir)
## UDP messaging ##################################################
UDP_IP = json_variables['_udphost']
- UDP_PORT = json_variables['_udpport']
+ UDP_PORT = int(json_variables['_udpport'])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_dict={}
socket_dict['_uuid'] = json_variables['_uuid']
@@ -119,8 +119,8 @@
master_rotdif, slave_rotdif = pty.openpty()
ProcessRotdif = subprocess.Popen( ProcessToCallRotdif,stdout=slave_rotdif,stdin=PIPE,bufsize=0,close_fds=True)
stdout_rotdif = os.fdopen(master_rotdif, 'r', 0)
- rotdif_log = open('elmdock_log.out','w')
- path_to_live_log = str(base_dir) + "/" + 'elmdock_log.out'
+ rotdif_log = open('elmdock_results.out','w')
+ path_to_live_log = str(base_dir) + "/" + 'elmdock_results.out'
error_string_md = ''
timeout = 30 # seconds


Modified: rotdif/bin/save_dock.py
==============================================================================
--- rotdif/bin/save_dock.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/save_dock.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -3,7 +3,7 @@

def save_dock(dyna_flag, elm_flag, elmdock_flag):
elm_pred = split_data(dyna_flag, elm_flag, elmdock_flag)[7]
- with open('ELMDOCK','w') as out_f:
+ with open('elmdock_transformations.out','w') as out_f:
for items in elm_pred:
out_f.write(items+'\n')


Modified: rotdif/bin/save_dock_elmdock.py
==============================================================================
--- rotdif/bin/save_dock_elmdock.py Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/bin/save_dock_elmdock.py Sun Aug 4 15:26:06 2019 (r1705)
@@ -3,7 +3,7 @@

def save_dock(dyna_flag, elm_flag, elmdock_flag):
elm_pred = split_data(dyna_flag, elm_flag, elmdock_flag)[7]
- with open('ELMDOCK','w') as out_f:
+ with open('elmdock_transformations.out','w') as out_f:
for items in elm_pred:
out_f.write(items+'\n')


Modified: rotdif/directives.json
==============================================================================
--- rotdif/directives.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/directives.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -1,4 +1,5 @@
{
+ "docsbaseurl" : "docs",
"help_text_color_rgb" : "240,240,210",
"logdirectory" : "_log",
"button_color_rgb" : "200,128,0",

Added: rotdif/files/acknowledgements.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ rotdif/files/acknowledgements.html Sun Aug 4 15:26:06 2019 (r1705)
@@ -0,0 +1,40 @@
+<div style="width:1000px;margin-left:100px" >
+<p><span style="font-weight:bold;font-size:20pt;font-family:'Avenir'">Acknowledgments
+</span></p>
+<div class="">
+ <img src="https://drive.google.com/uc?id=1VUO5ds0TfXGZ8ARc6dUF90GzuGk0yUTn" width="400" height="200"></img>
+ <img src="https://drive.google.com/uc?id=1MCe82b_VyJP7mFB_h_4fYFyCD8eKABmq" width="200" height="200"></img>
+</div>
+
+<p class="_normal" style=
+"text-align:left;margin-bottom:8.000000pt;margin-top:0.000000pt"
+awml:style="_Normal"><span style=
+"font-size:16pt;font-family:'Avenir'">ROTDIF-Web is made possible by the collaboration between researchers from University of Texas Health Science Center (UTHSC)
+and University of Maryland (UMD).</span></p>
+
+<p><span style="font-weight:bold;font-size:18pt;font-family:'Avenir'">Main Contributions
+</span></p>
+
+<div style= "font-size:16pt;font-family:'Avenir'">
+ <p>GenApp framework development: Emre Brookes@UTHSC</p>
+ <p>ROTDIF integration: Yuexi Chen@UMD, Alexey Savelyev@UTHSC</p>
+ <p>Guidance and design: David Fushman@UMD</p>
+ <p>Examples, feedback and suggestions: David Fushman@UMD, Andrew Boughton@UMD</p>
+</div>
+
+<p><span style="font-weight:bold;font-size:18pt;font-family:'Avenir'">Funding
+</span></p>
+<div class="">
+ <img src="https://drive.google.com/uc?id=1ldadw-cR_WgqeqzvnhHba_QCXfBuHyc1" width="150" height="150"></img>
+ <img src="https://drive.google.com/uc?id=16xQfIud0tR1JcVXN6R3-ItoJm159q2dr" width="400" height="150"></img>
+</div>
+
+<div style= "font-size:16pt;font-family:'Avenir'">
+ <p>OAC-1739549 (to D.F.)</p>
+ <p>OAC-1740087 (to E.B.)</p>
+ <p>Science Gateways Community Institute (summer internship to Y.C.)</p>
+</div>
+
+
+
+

Added: rotdif/files/disclaimer.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ rotdif/files/disclaimer.html Sun Aug 4 15:26:06 2019 (r1705)
@@ -0,0 +1,13 @@
+<div style="width:850px;margin-left:100px;">
+<p><span style="font-weight:bold;font-size:20pt;font-family:'Avenir'">Disclaimer</span></p>
+
+<p></p>
+
+<p class="" style=
+"text-align:justify;margin-bottom:0.0000in;margin-top:0.0000in;margin-right:0.0000in"
+awml:style="Normal"><span style=
+"font-style:italic;font-size:16pt;font-family:'Avenir'">
+ROTDIF</span> <span style=
+"font-size:16pt;font-family:'Avenir'">is distributed "as is", without any warranty, including any implied warranty of merchantability or fitness for a particular use. The authors assume no responsibility for, and shall not be liable for, any special, indirect, or consequential damages, or any damages whatsoever, arising out of or in connection with the use of this software.
+</p>
+</div>

Modified: rotdif/files/tutorial.html
==============================================================================
--- rotdif/files/tutorial.html Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/files/tutorial.html Sun Aug 4 15:26:06 2019 (r1705)
@@ -1,13 +1,26 @@
-<div style="width:850px;margin-left:100px;">
-<p><span style="font-weight:bold;font-size:20pt;font-family:'Avenir'">Disclaimer</span></p>
+ <div style="width:800px;margin-left:100px">
+ <p><span style="font-weight:bold;font-size:20pt;font-family:'Avenir'">Welcome</span></p>
+
+ <p style="text-align:left;margin-bottom:0.000000pt;margin-top:0.000000pt"></p>
+
+ <p style="font-size:16pt;font-family:'Avenir'">
+ Welcome to ROTDIF, a package for processing, prediction, and rigid-body docking based on nuclear spin-relaxation data!</p>
+
+ <p style="text-align:justify;margin-bottom:0.000000pt;margin-top:0.000000pt">
+ <span style=
+ "font-size:16pt;font-family:'Avenir'">
+ ROTDIF-Web is a web-server that helps researchers investigate the amplitudes and time scales of internal motions in biological macromolecules (proteins and nucleic acids). On ROTDIF-Web, users can simultaneously analyze Nuclear Magnetic Resonance (NMR) relaxation data obtained at multiple magnetic fields and for different nuclei. ROTDIF-Web also includes powerful tools for ab initio prediction of rotational diffusion tensors from macromolecular structures and for building macromolecular complexes using rotational diffusion-guided docking. ROTDIF-Web incorporates all the features of portable ROTDIF 3.0 (written in Java) and extends data management and visualization features.
+ </span></p>
+ <p><span style="font-weight:bold;font-size:20pt;font-family:'Avenir'">Tutorials</span></p>
+ <p><a href="rotdif_intro.html" target= "_new">Introduction</a></p>
+ <p><a href="rotdif_all.html" target="_new">ROTDIF & Dynamics Analysis Tutorial</a></p>
+ <p><a href="elm.html" target="_new">Diffusion Tensor Prediction Tutorial</a></p>
+ <p><a href="elmdock.html" target="_new">Diffusion Tensor-guided Docking Tutorial</span></a></p>
+ <p><span style="font-weight:bold;font-size:16pt;font-family:'Avenir'">If you use ROTDIF in your work, please cite</span></a></p>
+ <p style="color:#FFFFFF"><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3939081/" target= "_new">[1] Konstantin Berlin, Andrew Longhini, T. Kwaku Dayie, David Fushman, Deriving quantitative dynamics information for proteins and RNAs using ROTDIF with a graphical user interface, <span style="font-style:italic;font-size:14pt;font-family:'Times New Roman'"> J Biomol NMR, </span> 2013 ;57(4):333-52 </a></p>
+ <p style="color:#FFFFFF"><a href="https://www.ncbi.nlm.nih.gov/pubmed/15140445" target="_new"> [2] Olivier Walker, Ranjani Varadan, David Fushman, Efficient and accurate determination of the overall rotational diffusion tensor of a molecule from 15N relaxation data using computer program ROTDIF, <span style=
+ "font-style:italic;font-size:14pt;font-family:'Times New Roman'"> J Magn Reson, </span> 2004;168(2):336-45. </a></p>
+
+ </div>

-<p></p>

-<p class="" style=
-"text-align:justify;margin-bottom:0.0000in;margin-top:0.0000in;margin-right:0.0000in"
-awml:style="Normal"><span style=
-"font-style:italic;font-size:16pt;font-family:'Avenir'">
-For a quick ROTDIF tutorial,</span> <span style=
-"font-size:16pt;font-family:'Avenir'">Please click <a href="https://drive.google.com/open?id=1kJJXEVtpoZ-KZ5p_pt1TByJGcBkxHVjc">here to download</a>
-</p>
-</div>

Modified: rotdif/menu.json
==============================================================================
--- rotdif/menu.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/menu.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -2,23 +2,6 @@
{
# "header" : "ROTDIF",
"menu" : [
-
- {
- "id" : "welcome_menu",
- "label" : "Welcome!",
- "icon" : "pngs/noicon.png",
- "autorun" : "welcome",
- "startup" : "true",
- "nohidemenu" : "true",
- "help" : "test welcome help",
- "modules" : [
- {
- "id" : "welcome",
- "label" : "Welcome",
- "nobutton" : "true"
- }
- ]
- },
# {
# "id" : "demo_menu",
# "label" : "How to Use",
@@ -43,35 +26,8 @@
"nobutton" : "true"
}
]
- }
- ,{
- "id" : "Acknowledgements_menu",
- "label" : "Acknowledgements",
- "icon" : "pngs/noicon.png",
- "autorun" : "acknowledgements",
- "modules" : [
- {
- "id" : "acknowledgements",
- "label" : "Acknowledgements",
- "nobutton" : "true"
- }
- ]
- }
- ,{
- "id" : "disclaimer_menu",
- "label" : "Official Disclaimer",
- "icon" : "pngs/gnu_disclaimer.png",
- "autorun" : "disclaimer",
- "modules" : [
- {
- "id" : "disclaimer",
- "label" : "Official Disclaimer",
- "nobutton" : "true"
- }
- ]
- }
-
- ,{
+ },
+ {
"id" : "rotdif_menu",
"label" : "Run ROTDIF",
"icon" : "pngs/simulate.png",
@@ -95,37 +51,64 @@
}
]
}
- ,{
+ ,
+ {
+ "id" : "Acknowledgements_menu",
+ "label" : "Acknowledgements",
+ "icon" : "pngs/noicon.png",
+ "autorun" : "acknowledgements",
+ "modules" : [
+ {
+ "id" : "acknowledgements",
+ "label" : "Acknowledgements",
+ "nobutton" : "true"
+ }
+ ]
+ }
+ ,{
+ "id" : "disclaimer_menu",
+ "label" : "Official Disclaimer",
+ "icon" : "pngs/gnu_disclaimer.png",
+ "autorun" : "disclaimer",
+ "modules" : [
+ {
+ "id" : "disclaimer",
+ "label" : "Official Disclaimer",
+ "nobutton" : "true"
+ }
+ ]
+ },
+ {
"id" : "admin",
"restricted" : "admin",
"label" : "Admin",
"icon" : "pngs/admin.png",
"modules" : [
- {
+ {
"id" : "jobmonitor",
"label" : "Job monitor"
- }
- ,{
+ }
+ ,{
"id" : "jobintegritycheck",
"label" : "Integrity check"
- }
- ,{
+ }
+ ,{
"id" : "sysuserslist",
"label" : "Users"
- }
- ,{
+ }
+ ,{
"id" : "sys_manage_users",
"label" : "User management"
- }
- ,{
+ }
+ ,{
"id" : "jobshistory_1",
"label" : "Job history"
- }
-
- ]
- }
+ }
+
+ ]
+ },

- ,{
+ {
"id" : "etc",
"modules" : [
{

Modified: rotdif/modules/acknowledgements.json
==============================================================================
--- rotdif/modules/acknowledgements.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/modules/acknowledgements.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -12,7 +12,7 @@
"id" : "text1",
"type" : "html"
# ,"value" : "__< Acknowledgements.docx"
- ,"value" : "__< acknowledgements_my.html"
+ ,"value" : "__< acknowledgements.html"
}
]
}

Modified: rotdif/modules/disclaimer.json
==============================================================================
--- rotdif/modules/disclaimer.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/modules/disclaimer.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -12,7 +12,7 @@
"id" : "text1",
"type" : "html"
# ,"value" : "__<Official Disclaimer.docx"
- ,"value" : "__< official_disclaimer_my.html"
+ ,"value" : "__< disclaimer.html"
}



Modified: rotdif/modules/elm.json
==============================================================================
--- rotdif/modules/elm.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/modules/elm.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -24,7 +24,7 @@
{
"role" : "input"
,"id" : "run_name"
- ,"label" : "run name"
+ ,"label" : "Run Name"
,"type" : "text"
,"required" : "true"
,"help" : "Enter a name for this task"
@@ -33,7 +33,7 @@
{
"role" : "input",
"id" : "data_label",
- "label" : "DATA",
+ "label" : "Data",
"type" : "label",
"prehline" : "true",
"posthline": "true",
@@ -51,7 +51,7 @@
{
"role" : "input",
"id" : "model",
- "label" : "PDB File model",
+ "label" : "PDB File Model",
"type" : "text",
"required" : "True",
"default" : "1"
@@ -59,7 +59,7 @@
{
"role" : "input",
"id" : "runmenu_label",
- "label" : "RUN MENU",
+ "label" : "Run Menu",
"type" : "label",
"prehline" : "true",
"posthline": "true",
@@ -76,7 +76,7 @@
{
"role" : "input",
"id" : "adv_option",
- "label" : "check box to enable advanced model",
+ "label" : "Check Box to Enable Advanced Model",
"type" : "checkbox",
"checked" : "false",
"repeater" : "true"
@@ -84,7 +84,7 @@
{
"role" : "input",
"id" : "hydro",
- "label" : "Hydration layer thickness(Angstrom)",
+ "label" : "Hydration Layer Thickness(Angstrom)",
"type" : "text",
"required" : "True",
"default" : "2.2",
@@ -93,7 +93,7 @@
{
"role" : "input",
"id" : "water",
- "label" : "Water radius(Angstrom)",
+ "label" : "Water Radius(Angstrom)",
"type" : "text",
"required" : "True",
"default" : "1.4",
@@ -135,7 +135,14 @@
"label":"ELM Tensor Axes PyMol File: ",
"type":"file",
"multiple":"true"
- }
+ },
+ {
+ "role":"output",
+ "id" :"elm_ellipsoid",
+ "label":"ELM Ellipsoid PyMol File: ",
+ "type":"file",
+ "multiple":"true"
+}
],

# the executable will take inputs in order and produce output

Modified: rotdif/modules/elmdock.json
==============================================================================
--- rotdif/modules/elmdock.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/modules/elmdock.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -24,7 +24,7 @@
{
"role" : "input"
,"id" : "run_name"
- ,"label" : "run name"
+ ,"label" : "Run Name"
,"type" : "text"
,"required" : "true"
,"help" : "Enter a name to run this task"
@@ -47,7 +47,7 @@
"type" : "lrfile",
"required" : "False",
"accept" : ".txt",
- "help" : "Upload relaxation file"
+ "help" : "Select Relaxation Data File"
},

{
@@ -57,12 +57,12 @@
"type" : "lrfile",
"required" : "true",
"accept" : ".pdb",
- "help" : "Upload PDB file"
+ "help" : "Select Coordinates File"
},
{
"role" : "input",
"id" : "model",
- "label" : "PDB File model",
+ "label" : "PDB File Model",
"type" : "text",
"required" : "True",
"default" : "1"
@@ -70,7 +70,7 @@
{
"role" : "input",
"id" : "runmenu_label",
- "label" : "RUN MENU",
+ "label" : "Run Menu",
"type" : "label",
"prehline" : "true",
"posthline": "true",
@@ -105,7 +105,7 @@
{
"role" : "input",
"id" : "adv_option",
- "label" : "check box to enable advanced model",
+ "label" : "Check Box to Enable Advanced Model",
"type" : "checkbox",
"checked" : "false",
"repeater" : "true"
@@ -113,7 +113,7 @@
{
"role" : "input",
"id" : "hydro",
- "label" : "Hydration layer thickness(Angstrom)",
+ "label" : "Hydration Layer Thickness(Angstrom)",
"type" : "text",
"required" : "True",
"default" : "2.2",
@@ -122,7 +122,7 @@
{
"role" : "input",
"id" : "water",
- "label" : "Water radius(Angstrom)",
+ "label" : "Water Radius(Angstrom)",
"type" : "text",
"required" : "True",
"default" : "1.4",
@@ -154,7 +154,7 @@
# {
# "role" : "output",
# "id" : "elm_out",
- # "label" : "Download ELM prediction ",
+ # "label" : "Download ELM Prediction ",
# "type" : "file",
# "multiple": "true"
#},

Modified: rotdif/modules/rotdif_all.json
==============================================================================
--- rotdif/modules/rotdif_all.json Tue Jul 23 16:19:58 2019 (r1704)
+++ rotdif/modules/rotdif_all.json Sun Aug 4 15:26:06 2019 (r1705)
@@ -25,7 +25,7 @@
{
"role" : "input"
,"id" : "run_name"
- ,"label" : "run name"
+ ,"label" : "Run Name"
,"type" : "text"
,"required" : "true"
,"help" : "Enter a name to run this task"
@@ -34,7 +34,7 @@
{
"role" : "input",
"id" : "data_label",
- "label" : "DATA",
+ "label" : "Data",
"type" : "label",
"prehline" : "true",
"posthline": "true",
@@ -63,7 +63,7 @@
{
"role" : "input",
"id" : "model",
- "label" : "PDB File model",
+ "label" : "PDB File Model",
"type" : "text",
"required" : "True",
"default" : "1"
@@ -71,7 +71,7 @@
{
"role" : "input",
"id" : "runmenu_label",
- "label" : "RUN MENU",
+ "label" : "Run Menu",
"type" : "label",
"prehline" : "true",
"posthline": "true",
@@ -91,7 +91,7 @@
{
"role" : "input",
"id" : "axeslength",
- "label" : "Axes length(Angstrom)",
+ "label" : "Axes Length(Angstrom)",
"type" : "text",
"required" : "True",
"default" : "5"
@@ -107,7 +107,7 @@
{
"role" : "input",
"id" : "run_dyna",
- "label" : "Run dynamics ",
+ "label" : "Run Dynamics ",
"type" : "checkbox",
"checked" : "false"
},
@@ -151,14 +151,14 @@
{
"role" : "output",
"id" : "axi_out",
- "label" : "Tensor Axes PyMol File, axially symmetric model: ",
+ "label" : "Tensor Axes PyMol File, Axially Symmetric Model: ",
"type" : "file",
"multiple": "true"
},
{
"role" : "output",
"id" : "ani_out",
- "label" : "Tensor Axes PyMol File, fully anisotropic model: ",
+ "label" : "Tensor Axes PyMol File, Fully Anisotropic Model: ",
"type" : "file",
"multiple": "true"
},

Join genapp-commits@groups.io to automatically receive all group messages.