Exemple #1
0
def _read_datafile(filename, dt, skip) :
    """
    Read a data series and remove equilibration
    """
    data = parsing.parse2ndarray(filename)
    data[:,0] = data[:,0] * dt # Make the time column to ps
    freq = data[1,0] - data[0,0]
    nskip = int(skip/freq)
    d = data[(nskip+1):,:]
    return d
Exemple #2
0
def _read_datafile(filename, dt, skip):
    """
    Read a data series and remove equilibration
    """
    data = parsing.parse2ndarray(filename)
    data[:, 0] = data[:, 0] * dt  # Make the time column to ps
    freq = data[1, 0] - data[0, 0]
    nskip = int(skip / freq)
    d = data[(nskip + 1):, :]
    return d
Exemple #3
0
    if args.ymax is not None and args.ymin is not None:
        for i, x in enumerate(args.vertical):
            if args.vstyle is not None:
                stl = colors.style(args.vstyle[i])
            else:
                stl = colors.style(i + 1)
            a.plot([x, x], [args.ymin, args.ymax], stl, color='k')

    ylim = [10E10, -10E10]
    xlim = [10E10, -10E10]

    lines = []
    for i, (filename, label,
            axis) in enumerate(zip(args.file, args.label, plotax)):
        data = parsing.parse2ndarray(filename)
        if args.skip < 1:
            n = int(np.floor(args.skip * data.shape[0]))
        else:
            n = args.skip
        data = data[n:, :]
        if args.multicol is not None:
            args.ycol = args.multicol[i]
        if data.shape[1] == 1: args.ycol = 0
        y = data[n:, args.ycol] * args.yfactor
        if data.shape[1] > 1:
            x = data[n:, args.xcol] * args.xfactor
        else:
            x = np.arange(1, len(y) + 1) * args.xfactor
        if args.stride is not None:
            x = x[::args.stride]
# Author: Samuel Genheden [email protected]
"""
Script to calculate PMF properties, i.e. penetration and water/lipid barriers
"""

import sys

import numpy as np
from scipy.interpolate import interp1d

from sgenlib import parsing
from sgenlib import snum

data = parsing.parse2ndarray(sys.argv[1])
x = data[:, 0]
pmf = data[:, 1]
err = data[:, 2]

mini = np.argmin(pmf)

dGdepth = pmf[mini] - pmf[-1]
dGpen = pmf[0] - pmf[mini]

errdepth = np.sqrt(err[mini]**2 + err[-1]**2)
errpen = np.sqrt(err[0]**2 + err[mini]**2)

kT = 300 * 0.00831446210
expav = np.exp(-pmf / kT)
expstd = np.abs(expav * (-err / kT))
bndint, bndstd = snum.trapz(x, expav, expstd)
freeint = np.trapz(np.ones(x.shape[0]), x)
Exemple #5
0
        a = figure.add_subplot(nrows, ncols, i)
        a.plot(data[:, 1], data[:, 0], ".", color=colors.color(i - 1))
        tau, tpval = stats.kendalltau(data[:, 1], data[:, 0])
        r, rpval = stats.pearsonr(data[:, 1], data[:, 0])
        print "%s\t%.5f\t%.5f\t%.5f\t%5f" % (label, r, rpval, tau, tpval)
        a.plot([minv, maxv], [minv, maxv], "--k")
        a.set_xlim(minv, maxv)
        a.set_ylim(minv, maxv)
        a.set_xticks(ticks)
        a.set_yticks(ticks)
        if ilabels or a.is_first_col():
            a.set_ylabel(ylabel)
        if ilabels or a.is_last_row():
            a.set_xlabel(xlabel)
        a.text(0.05, 0.92, label, transform=a.transAxes)
        a.set_aspect('equal')

    figure.tight_layout()
    print ""


if __name__ == '__main__':

    data = parsing.parse2ndarray(sys.argv[1])
    figure = plt.figure(1, figsize=(7, 7))
    _plot_data(figure, [data], [""],
               r'$\mathrm{log} D_\mathrm{AA}$',
               r'$\mathrm{log} D_\mathrm{exp.}$',
               ncols=1)
    figure.savefig(sys.argv[2], format="png", dpi=300)
Exemple #6
0
# Author: Samuel Genheden [email protected]

import sys

import numpy as np

from sgenlib import parsing

if __name__ == '__main__' :

    data = parsing.parse2ndarray(sys.argv[1])
    true_signs = (np.abs(data[:,0])>=1.96*data[:,1]).sum()
    print "Number of true signs is %d of %d, that is %d percent"%(true_signs,
        data.shape[0], float(true_signs)/float(data.shape[0])*100)
    print "Predictions with false signs %s"% \
        ", ".join("%.1f+-%.2f"%tuple(d) for d in data[np.abs(data[:,0])<1.96*data[:,1],:])
Exemple #7
0
def _dobar(filename):
    """
    Read an oputput file from g_bar and return the dG in kcal/mol
    """
    data = parsing.parse2ndarray(filename)
    return 1.987*0.3*data[:,1].sum()
def _dobar(filename):
    """
    Read an oputput file from g_bar and return the dG in kcal/mol
    """
    data = parsing.parse2ndarray(filename)
    return 1.987 * 0.3 * data[:, 1].sum()
Exemple #9
0
    x3 = x2*x
    hfex = hfecoeff[0]*x3+hfecoeff[1]*x2+hfecoeff[2]*x+hfecoeff[3]
    iodx = iodcoeff[0]*x3+iodcoeff[1]*x2+iodcoeff[2]*x+iodcoeff[3]
    hfediff = np.abs(np.divide(hfex - hfefit,hfefit)).sum()
    ioddiff = np.abs(np.divide(iodx - iodfit,iodfit)).sum()

    return hfediff + ioddiff

if __name__ == '__main__' :

    parser = argparse.ArgumentParser(description="Optimize LJ parameters")
    parser.add_argument('-s','--scanfile',help="the data from the scans")
    parser.add_argument('-f','--fitfile',help="the data points to fit")
    args = parser.parse_args()

    scans = parsing.parse2ndarray(args.scanfile)
    fitpnt = parsing.parse2ndarray(args.fitfile)

    hfecoeff = np.polyfit(scans[:,0],scans[:,1],3)
    iodcoeff = np.polyfit(scans[:,0],scans[:,2],3)

    xmin = scans[:,0].min()
    xmax = scans[:,0].max()
    x0 = np.ones(fitpnt.shape[0])*scans[:,0].mean()
    arglst = (hfecoeff,iodcoeff,fitpnt[:,0],fitpnt[:,1])
    bnds = np.ones((fitpnt.shape[0],2))
    bnds[:,0] *= xmin
    bnds[:,1] *= xmax

    res = opt.minimize(objfunc,x0,args=arglst,bounds=bnds)
    optx = res.x
Exemple #10
0
    hfex = hfecoeff[0] * x3 + hfecoeff[1] * x2 + hfecoeff[2] * x + hfecoeff[3]
    iodx = iodcoeff[0] * x3 + iodcoeff[1] * x2 + iodcoeff[2] * x + iodcoeff[3]
    hfediff = np.abs(np.divide(hfex - hfefit, hfefit)).sum()
    ioddiff = np.abs(np.divide(iodx - iodfit, iodfit)).sum()

    return hfediff + ioddiff


if __name__ == '__main__':

    parser = argparse.ArgumentParser(description="Optimize LJ parameters")
    parser.add_argument('-s', '--scanfile', help="the data from the scans")
    parser.add_argument('-f', '--fitfile', help="the data points to fit")
    args = parser.parse_args()

    scans = parsing.parse2ndarray(args.scanfile)
    fitpnt = parsing.parse2ndarray(args.fitfile)

    hfecoeff = np.polyfit(scans[:, 0], scans[:, 1], 3)
    iodcoeff = np.polyfit(scans[:, 0], scans[:, 2], 3)

    xmin = scans[:, 0].min()
    xmax = scans[:, 0].max()
    x0 = np.ones(fitpnt.shape[0]) * scans[:, 0].mean()
    arglst = (hfecoeff, iodcoeff, fitpnt[:, 0], fitpnt[:, 1])
    bnds = np.ones((fitpnt.shape[0], 2))
    bnds[:, 0] *= xmin
    bnds[:, 1] *= xmax

    res = opt.minimize(objfunc, x0, args=arglst, bounds=bnds)
    optx = res.x
Exemple #11
0
    parser.add_argument(
        '--extent',
        type=float,
        nargs=4,
        help="the extent (left, right, bottom, top) of the image")
    parser.add_argument('--nobar',
                        action="store_true",
                        help="don't draw a colorbar",
                        default=False)
    parser.add_argument('--multiplot',
                        action="store_true",
                        help="draw more maps in subplots",
                        default=False)
    parser.add_argument('-o',
                        '--out',
                        help="the output filename of the multiplot")
    args = parser.parse_args()

    all_mat = [parsing.parse2ndarray(filename) for filename in args.file]

    if not args.multiplot:
        for filename, mat in zip(args.file, all_mat):
            outname = os.path.splitext(filename)[0] + ".png"
            if args.out is not None and len(args.file) == 1:
                outname = args.out
            _draw_2dmap(mat, args.cutoff, args.max, args.ylabel, args.xlabel,
                        args.extent, args.cblabel, args.nobar, outname)
    else:
        _draw_multi_2dmap(all_mat, args.cutoff, args.max, args.ylabel,
                          args.xlabel, args.extent, args.cblabel, args.out)
Exemple #12
0
# Author: Samuel Genheden [email protected]

import sys

import numpy as np

from sgenlib import parsing

if __name__ == '__main__':

    data = []
    for filename in sys.argv[1:] :
        data.append(parsing.parse2ndarray(filename))
    data = np.asarray(data)
    av = data.mean(axis=0)
    std = data.std(axis=0)/np.sqrt(data.shape[0])
    for irow in range(data.shape[1]) :
        print data[0, irow, 0],"\t",
        print "\t".join("%.3f\t%.3f"%(a,s)
            for a, s in zip(av[irow, 1:], std[irow, 1:]))
Exemple #13
0
                        default="w_rdf.txt")
    parser.add_argument('-p',
                        '--phosphate',
                        help="the phosphate density",
                        default="p_rdf.txt")
    parser.add_argument('-g',
                        '--glycerol',
                        help="the glycerol density",
                        default="g_rdf.txt")
    parser.add_argument('-t',
                        '--tail',
                        help="the tail density",
                        default="t_rdf.txt")
    args = parser.parse_args()

    wdens = parsing.parse2ndarray(args.water)
    pdens = parsing.parse2ndarray(args.phosphate)
    gdens = parsing.parse2ndarray(args.glycerol)
    tdens = parsing.parse2ndarray(args.tail)

    n = int(np.round(pdens.shape[0] * 0.5))
    leftmaxi = np.argmax(pdens[:n, 2])
    rightmaxi = np.argmax(pdens[n:, 2]) + n
    midz = pdens[leftmaxi,
                 0] + 0.5 * (pdens[rightmaxi, 0] - pdens[leftmaxi, 0])
    try:
        midi = np.where(pdens[:, 0] == midz)[0][0]
    except:
        midi = np.where(pdens[:, 0] == midz)[0]
    if len(midi) == 0:
        midi = int(leftmaxi + 0.5 * (rightmaxi - leftmaxi))
Exemple #14
0
                        help="the temperature used in the simulation",
                        default=300.0)
    args = parser.parse_args()

    if len(args.files) == 0:
        print "No files specified so nothing to do."
        quit()

    boltzmann = 0.001982923700
    RT = args.temp * wham.KB[wham.KJMOL]
    const = args.apl * np.power(10,
                                -24.0) / (786.14 * 1.66 * np.power(10, -27.0))

    densities = []
    if args.densities is not None:
        densities = [parsing.parse2ndarray(d) for d in args.densities]

    f = plt.figure(figsize=(3.33, 2.5))
    #a = fig1.add_axes((0.15,0.2,0.8,0.75))
    a = f.add_axes((0.18, 0.2, 0.75, 0.75))

    max_pmf = -1000
    min_pmf = 1000
    pmfs = []
    for i, (filename, label) in enumerate(zip(args.files, args.labels)):
        pmfs.append(wham.UmbrellaPmf())
        pmfs[-1].read(filename)
        pmfs[-1].z *= 0.1
        transfer_dg = pmfs[-1].transfer_dg()
        wat_barr = pmfs[-1].waterlipid_barrier()
        pen_barr = pmfs[-1].penetration_barrier()
Exemple #15
0
# Author: Samuel Genheden [email protected]

import sys

import numpy as np

from sgenlib import parsing

if __name__ == '__main__':

    data = []
    for filename in sys.argv[1:]:
        data.append(parsing.parse2ndarray(filename))
    data = np.asarray(data)
    av = data.mean(axis=0)
    std = data.std(axis=0) / np.sqrt(data.shape[0])
    for irow in range(data.shape[1]):
        print data[0, irow, 0], "\t",
        print "\t".join("%.3f\t%.3f" % (a, s)
                        for a, s in zip(av[irow, 1:], std[irow, 1:]))
# Author: Samuel Genheden [email protected]

"""
Script to calculate PMF properties, i.e. penetration and water/lipid barriers
"""

import sys

import numpy as np
from scipy.interpolate import interp1d

from sgenlib import parsing
from sgenlib import snum

data = parsing.parse2ndarray(sys.argv[1])
x = data[:,0]
pmf = data[:,1]
err = data[:,2]

mini = np.argmin(pmf)

dGdepth = pmf[mini] - pmf[-1]
dGpen   = pmf[0] - pmf[mini]

errdepth = np.sqrt(err[mini]**2 + err[-1]**2)
errpen   = np.sqrt(err[0]**2 + err[mini]**2)

kT = 300*0.00831446210
expav = np.exp(-pmf/kT)
expstd = np.abs(expav*(-err/kT))
bndint, bndstd = snum.trapz(x, expav, expstd)
Exemple #17
0
    if args.twin : plotax[1] = a.twinx()

    if args.ymax is not None and args.ymin is not None :
        for i, x in enumerate(args.vertical) :
            if args.vstyle is not None :
                stl = colors.style(args.vstyle[i])
            else :
                stl = colors.style(i+1)
            a.plot([x,x],[args.ymin,args.ymax], stl, color='k')

    ylim = [10E10, -10E10]
    xlim = [10E10, -10E10]

    lines = []
    for i, (filename,label, axis) in enumerate(zip(args.file,args.label, plotax)) :
        data = parsing.parse2ndarray(filename)
        if args.skip < 1 :
            n = int(np.floor(args.skip * data.shape[0]))
        else :
            n = args.skip
        data = data[n:,:]
        if args.multicol is not None :
            args.ycol = args.multicol[i]
        if data.shape[1] == 1 : args.ycol = 0
        y = data[n:,args.ycol]*args.yfactor
        if data.shape[1] > 1 :
            x = data[n:,args.xcol]*args.xfactor
        else:
            x = np.arange(1,len(y)+1)*args.xfactor
        if args.stride is not None :
            x = x[::args.stride]
Exemple #18
0
            if np.sum(data[idx,1]) > 0 and np.sum(data[idx,1]) != data.shape[0]: break
        scoreddata = croc.ScoredData(data[idx,:])
        bedrocs[i] = croc.BEDROC(scoreddata,1.0)['BEDROC']
    return bedrocs

if __name__ == '__main__':

    argparser = argparse.ArgumentParser(description="Script to compute BEDROC analysis for a groups of solutes")
    argparser.add_argument('-f', '--file', help="the results")
    argparser.add_argument('-l', '--labels', help="the labels")
    argparser.add_argument('-g', '--groupfolder', help="the folder for groups")
    argparser.add_argument('--debug', action="store_true", help="turn on debugging", default=False)
    argparser.add_argument('--plot', action="store_true", help="turn on plotting", default=False)
    args = argparser.parse_args()

    data = parsing.parse2ndarray(args.file)
    with open(args.labels, 'r') as f:
        labels = [line.strip() for line in f.readlines()]

    solutegroups = []
    for label in labels:
        with open(os.path.join(args.groupfolder, label+".groups"), 'r') as f:
            groups = [line.strip() for line in f.readlines()]
        solutegroups.append(groups)

    if args.debug:
        print "Unique basic groups and their counts"
        uniquelist = {}
        for g in solutegroups:
            for l in g :
                if l not in uniquelist : uniquelist[l] = 0