Ejemplo n.º 1
0
                    help="indices of atoms to consider")
args = parser.parse_args()
#######################################

refs = args.ref

# convert references into lists of coordinates
if refs[0].split(".")[-1] == "npy":
    refs = [npy3to2(np.load(r)) for r in refs]
else:
    coors = []
    for r in refs:
        ll = [l for l in open(r).readlines() if l.startswith("ATOM")]
        coor = [[float(l[30:38]),
                 float(l[38:46]),
                 float(l[46:54])] for l in ll]
        coors.append(coor)
    refs = np.array(coors)

npy = npy2to3(np.load(args.npy))
nat = np.shape(npy)[1]
selatoms = range(nat)
if args.atoms:
    selatoms = [int(i) - 1 for i in args.atoms]

rmsds = rmsdnpy(npy, refs, selatoms)
rmsd = np.min(rmsds, axis=1)

for i in range(len(rmsd)):
    print('%i %.2f' % (i + 1, rmsd[i]))
Ejemplo n.º 2
0
parser.add_argument('--postatoms',
                    nargs='+',
                    help="frag1-postatoms.npy frag2-postatoms.npy ...")
parser.add_argument('--rmsd',
                    nargs='+',
                    help="frag1.rmsd frag2.rmsd ...",
                    default=None)

args = parser.parse_args()
############

tree = json.load(open(args.graph))
max_meanrank = float(args.meanrank)
nfrag = tree["nfrags"]

postatoms = [npy2to3(np.load(f)) for f in args.postatoms]
preatoms = [npy2to3(np.load(f)) for f in args.preatoms]

meanrank_threshold = log(max_meanrank) * nfrag

lrmsds = []
if args.rmsd is not None:
    for f in args.rmsd:
        lrmsd = {}
        lnr = 0
        for l in open(f):
            lnr += 1
            ll = l.split()
            if len(ll) != 2: continue
            k = ll[0]
            if k == "l-RMSD": k = lnr
Ejemplo n.º 3
0
    RMSD = np.array([[(sum([(a1[i] - b1[i])**2
                            for i in range(ncoord)]) / (ncoord / 3))**0.5
                      for b1 in b] for a1 in a])
    return RMSD


assert len(
    sys.argv) == 3, "usage: python rmsdnpy.py npy.npy Lboundr.pdb > outp"

npyfile = sys.argv[1]  # npy.npy
if sys.argv[2].split(".")[-1] == "npy":
    ref = np.load(sys.argv[2])
    if len(ref.shape) > 2:
        assert ref.shape[2] == 3
        ref = ref.reshape((ref.shape[1], 3))
else:
    pdb = sys.argv[2]  # Lboundr.pdb
    ll = [l for l in open(pdb).readlines() if l.startswith("ATOM")]
    r = [[float(l[30:38]), float(l[38:46]), float(l[46:54])] for l in ll]
    ref = np.array(r)

npy = npy2to3(np.load(npyfile))
nat = np.shape(npy)[1]
selatoms = range(nat)
if len(sys.argv) > 3:
    selatoms = [int(i) - 1 for i in sys.argv[3:]]

RMSD = rmsdnpy(npy, ref, selatoms)
for i in range(len(RMSD)):
    print('%i %.2f' % (i + 1, RMSD[i]))
Ejemplo n.º 4
0
#!/usr/bin/env python3
# Copyright Sjoerd J. De Vries (INSERM)

import sys, os
import numpy as np
from npy import npy2to3

npy = npy2to3(np.load(sys.argv[1]))
assert npy.ndim == 3, npy.ndim
pdb = sys.argv[2]
outpf = sys.argv[3]

dirname = os.path.dirname(os.path.abspath(__file__))


def read_forcefield(forcefieldfile):
    ff = {}
    aa = None
    for l in open(forcefieldfile):
        pound = l.find("#")
        if pound > -1: l = l[:pound]
        l = l.strip()
        if not len(l): continue
        ll = l.split()
        if len(ll) == 1:
            aa = ll[0]
            assert len(aa) <= 3, l
            ff[aa] = []
        else:
            assert aa is not None
            try:
Ejemplo n.º 5
0
try:
    steps = np.loadtxt(chainfile, dtype=int) - 1  ### changed 9-02_17:30
    if len(steps.shape) == 1:
        steps = np.reshape(steps, (1, steps.shape[0]))
except:
    print("no np.loadtxt")
    cc = [[int(i) - 1 for i in l.split()] for l in open(chainfile)]
    steps = np.array(cc)

nfrag = steps.shape[1]
nat = args.nat
print(nat, file=sys.stderr)

assert nfrag == len(nat) + 1, (nfrag, len(nat))

coor = [npy2to3(np.load(i)) for i in args.coor]  # one np.array per step

outp = args.outp
assert outp != args.chains_file, "ERROR: output is same as input"

#initialise merged structure
max_atom = sum([n.shape[1] for n in coor])  #max nb of atoms in final chain
rna = np.zeros((len(steps), max_atom, 3))
count = 0

#First atoms unchanged
len_step = coor[0].shape[1]  #nb of atoms in 1st step
n = len_step - nat[0]  #nb of atom to not merge in 1st step
rna[:, :n] = coor[0][steps[:, 0], :n]
count += n