def testProdyNMDWriter(self):
        evec_path = os.path.join(anmichelpers.writers.test.__path__[0], "data",
                                 "eigenvectors.npy")
        eval_path = os.path.join(anmichelpers.writers.test.__path__[0], "data",
                                 "eigenvalues.npy")

        output_path = os.path.join(anmichelpers.writers.test.__path__[0],
                                   "data", "calculated.nmd")
        expected_path = os.path.join(anmichelpers.writers.test.__path__[0],
                                     "data", "expected.nmd")

        pdb_file_path = os.path.join(anmichelpers.writers.test.__path__[0],
                                     "data", "protein.pdb")

        eigenvalues = numpy.load(eval_path)
        eigenvectors = numpy.load(evec_path)

        ProdyNMDWriter.write(output_path, "TEST",
                             prody.parsePDB(pdb_file_path), eigenvalues,
                             eigenvectors)

        self.assertEqual("".join(open(expected_path).readlines()[1:]),
                         "".join(open(output_path).readlines())[1:])
        # global data
        header = g_header
        evals = l_evals
        evecs = fill_with_zeros(l_evecs, 
                                options.from_res, 
                                options.to_res,
                                len(g_evecs[0])/3)
    else: #  "GLOBAL_TO_LOCAL"
        header = {}
        
        assert "resnames" in g_header, "The global file must define the 'resnames' section"
        
        evals = g_evals
        ext_evecs, ext_sec = extract_evecs(g_evecs, 
                              options.from_res, 
                              options.to_res,
                              g_header["resnames"]) # The extracted sequence

        header["resnames"] = ext_sec
        
        if "coordinates" in g_header:
            header["coordinates"] = extract_coords(g_header["coordinates"] , 
                                                options.from_res, 
                                                options.to_res)
        
        evecs = ext_evecs
        
        
    header["title"] = options.output
    ProdyNMDWriter.write(options.output, evals, evecs, header)
Esempio n. 3
0
        else:
            offset = i * 2
            if res == "PRO":
                #only psi
                new_eigenvectors.append(old_eigenvectors[offset])
            else:
                # phi
                new_eigenvectors.append(old_eigenvectors[offset - 1])
                # psi
                new_eigenvectors.append(old_eigenvectors[offset])
    return numpy.array(new_eigenvectors).T


if __name__ == '__main__':
    parser = OptionParser()
    parser.add_option("-i", dest="input")
    parser.add_option("-s", dest="sequence")
    parser.add_option("-o", dest="output")
    (options, args) = parser.parse_args()

    eigenvalues, eigenvectors = GeoPCA.load(options.input)

    sequences = load_sequences(options.sequence)

    pro_eigenvectors = treat_prolines_in_eigenvectors(sequences[0],
                                                      eigenvectors)

    # And save it as nmd
    header = {"type": "ic:pca"}
    ProdyNMDWriter.write(options.output, eigenvalues, pro_eigenvectors, header)
Esempio n. 4
0
'''
Created on 04/05/2015

@author: user
'''
from optparse import OptionParser
import numpy
from anmichelpers.tools.measure import calculate_angle_differences
from anmichelpers.writers.pronmd import ProdyNMDWriter

if __name__ == '__main__':
    parser = OptionParser()
    parser.add_option("-f", dest="_from")
    parser.add_option("-t", dest="_to")
    
    parser.add_option("-o", dest="output")
    (options, args) = parser.parse_args()
    
    from_file_v = numpy.loadtxt(options._from)
    to_file_v = numpy.loadtxt(options._to)
    
    difference = calculate_angle_differences(to_file_v, from_file_v)
    
    ##############
    for i in range(len(difference)):
        if not i in range(98*2, 110*2):
            difference[i] = 0.
    ##############
    ProdyNMDWriter.write(options.output, [1.0], numpy.array([difference]),  {"type":"ic:pca"})
    
Esempio n. 5
0
    parser.add_option("-o", dest="output")
    (options, args) = parser.parse_args()

    name, extension = os.path.splitext(options.input)

    betas = None

    if extension == ".nmd":
        print "There's no need to convert this file."
        sys.exit()

    elif extension == ".evec":
        # Imods file
        eigenvalues, eigenvectors = ImodServerFilesParser.read(options.input)

    elif extension == ".slwevs":
        # Bahar server file
        eigenvalues, eigenvectors = BaharServerFilesParser.read(
            options.input_evals, options.input)
        if options.input_beta is not None:
            betas = BaharServerFilesParser.read_beta(options.input_beta)
    else:
        print "I don't know how to convert this file."
        sys.exit()

    structure = prody.proteins.pdbfile.parsePDB(options.protein_path)
    ca_indices = ProdyNMDWriter.get_alpha_indices(structure)
    ca_evecs = ProdyNMDWriter.filter_eigvecs(ca_indices, eigenvectors)
    ProdyNMDWriter.write(options.output, "conversion from %s" % options.input,
                         structure.select("name CA").copy(), ca_evecs,
                         eigenvectors, betas)
Esempio n. 6
0
                            new_mode.extend(ca_mode_v)
                        else:
                            n_atom = Atom("N", atom.resid)
                            #look for the atoms into the "ordered atoms" vector
                            ca_atom_o = find(lambda a: a == ca_atom,
                                             ordered_atoms)
                            n_atom_o = find(lambda a: a == n_atom,
                                            ordered_atoms)
                            # vector from N to CA
                            n_c = n_atom_o.coords - ca_atom_o.coords
                            # vector from CA to Atom
                            c_a = atom.coords - ca_atom_o.coords
                            # cross
                            n_cxmode = numpy.cross(n_c, ca_mode_v)
                            # cross again
                            c_axn_cxmode = numpy.cross(c_a, n_cxmode)
                            # module is CA mode v module
                            new_mode.extend(
                                c_axn_cxmode *
                                (math.sqrt(numpy.dot(ca_mode_v, ca_mode_v)) /
                                 math.sqrt(
                                     numpy.dot(c_axn_cxmode, c_axn_cxmode))))

        new_eigenvectors.append(new_mode)
    new_eigenvectors = numpy.array(new_eigenvectors)

    # Write it
    ProdyNMDWriter.write(name, eigenvalues, new_eigenvectors, new_header)
    numpy.savetxt(name + ".values", eigenvalues)
    numpy.savetxt(name + ".vectors", new_eigenvectors)
Esempio n. 7
0
            options.input_evals, options.input)
        if options.input_beta is not None:
            betas = BaharServerFilesParser.read_beta(options.input_beta)
    else:
        print "I don't know how to convert this file."
        sys.exit()

    if extension != ".nmd":
        new_header = {}
        # Get a new header from the structural info
        structure = prody.proteins.pdbfile.parsePDB(options.protein_path)
        header["name"] = options.input
        header["type"] = "cc:pca"
        header["atomnames"] = structure.getNames()
        header["coordinates"] = structure.getCoordsets()[0].flatten()
        header["chainids"] = structure.getChids()
        if betas is not None:
            header["bfactors"] = betas
        else:
            header["bfactors"] = structure.getBetas()
        header["resnames"] = structure.getResnames()
        header["resids"] = structure.getResindices()

    if options.ca_only:
        new_header, final_evecs = get_CA_modes(header, eigenvectors)
    else:
        final_evecs = eigenvectors
        new_header = header

    ProdyNMDWriter.write(options.output, eigenvalues, final_evecs, new_header)