Esempio n. 1
0
def dcd_fit(filename_dcd, filename_dcd_out, natom_total, serials,
            filename_rmsd):
    f_out = open(filename_rmsd, 'w')

    # Coord1
    pdb = PdbFile('16SCD.cg.pdb')
    pdb.open_to_read()
    ref_chains = pdb.read_all()
    pdb.close()

    #num_atom = 0
    #for chain in ref_chains :
    #    for residue in chain.residues :
    #        num_atom += len(residue.atoms)

    ref = zeros((natom_total, 3), dtype=float64, order='C')

    i = 0
    for chain in ref_chains:
        for residue in chain.residues:
            for atom in residue.atoms:
                (ref[i][0], ref[i][1], ref[i][2]) = atom.xyz.get_as_tuple()
                i += 1

    mask = []
    for i in range(natom_total):
        # the serial ID starts from 1, thus i+1 is the serial ID
        if i + 1 in serials:
            mask.append(1)
        else:
            mask.append(0)

    dcd = DcdFile(filename_dcd)
    dcd.open_to_read()
    dcd.read_header()

    out_dcd = DcdFile(filename_dcd_out)
    out_dcd.open_to_write()
    out_dcd.set_header(dcd.get_header())
    out_dcd.write_header()

    #dcd.show_header()
    k = 0
    while dcd.has_more_data():
        k += 1
        coords_dcd = dcd.read_onestep_np()

        rmsd = superimpose(ref.T, coords_dcd.T, mask)

        f_out.write('{:8d} {:6.2f}\n'.format(k, rmsd))

        out_dcd.write_onestep(coords_dcd)

    dcd.close()
    out_dcd.close()
Esempio n. 2
0
def dcd_concatenate(filepaths):
    n_frames = []  # To return the number of frames

    # Number of input DCD files
    num_dcd = len(filepaths) - 1

    # New DCD file
    f_out = DcdFile(filepaths[-1])
    f_out.open_to_write()

    # Count the total frame number
    num_frame = 1
    for i in range(0, num_dcd - 1):
        f_in = DcdFile(filepaths[i])
        f_in.open_to_read()
        f_in.read_header()
        num_frame += f_in.get_header().nset - 1
        f_in.close()

    # Get the total step number from final DCD file
    f_in = DcdFile(filepaths[num_dcd - 1])
    f_in.open_to_read()
    f_in.read_header()
    num_frame += f_in.get_header().nset - 1
    num_step = f_in.get_header().nstep
    f_in.close()

    f_in = DcdFile(filepaths[0])
    f_in.open_to_read()
    f_in.read_header()
    header = copy(f_in.get_header())
    header.nset = num_frame
    header.nstep = num_step
    f_out.set_header(header)
    f_out.write_header()
    #print filepaths[0], f_in.get_header().nset
    n_frames.append(f_in.get_header().nset)
    while f_in.has_more_data():
        f_out.write_onestep(f_in.read_onestep())
    f_in.close()

    for i in range(1, num_dcd):
        f_in = DcdFile(filepaths[i])
        f_in.open_to_read()
        f_in.read_header()
        f_in.skip_onestep()  # skip the first step
        #print filepaths[i], f_in.get_header().nset - 1
        n_frames.append(f_in.get_header().nset - 1)
        while f_in.has_more_data():
            f_out.write_onestep(f_in.read_onestep())
        f_in.close()

    f_out.close()

    return n_frames
Esempio n. 3
0
import sys
from cafysis.file_io.dcd import DcdFile
from cafysis.file_io.ts import TsFile

if len(sys.argv) != 4:
    print('Usage: % SCRIPT [input DCD] [ts file] [output DCD]')
    sys.exit(2)

# Open DCD and read the header
dcd_filename = sys.argv[1]
dcd = DcdFile(dcd_filename)
dcd.open_to_read()
dcd.read_header()

header = dcd.get_header()
#header.istart = header.nstep_save * (frame_begin - 1)
#header.istart = header.istart + header.nstep_save * frame_begin
#header.nset = int(frame_num / frame_stride)
#header.nset = int((frame_end-frame_begin)/frame_stride) + 1
#header.nstep = header.nstep_save * (frame_num - 1)
#header.nstep_save = header.nstep_save * frame_stride

# Open DCD and read the header
dcd_out = DcdFile(sys.argv[-1])
dcd_out.open_to_write()
dcd_out.set_header(header)
dcd_out.write_header()

# Open TS and read the header
ts = TsFile(sys.argv[2])
        sys.exit(2)

    # Number of input DCD files
    num_dcd = len(sys.argv) - 2

    # New DCD file
    f_out = DcdFile(sys.argv[-1])
    f_out.open_to_write()

    # Count the total frame number
    num_frame = 1
    for i in range(1, num_dcd):
        f_in = DcdFile(sys.argv[i])
        f_in.open_to_read()
        f_in.read_header()
        num_frame += f_in.get_header().nset
        f_in.close()

    # Get the total step number from final DCD file
    f_in = DcdFile(sys.argv[num_dcd])
    f_in.open_to_read()
    f_in.read_header()
    num_frame += f_in.get_header().nset
    num_step = f_in.get_header().nstep
    f_in.close()

    f_in = DcdFile(sys.argv[1])
    f_in.open_to_read()
    f_in.read_header()
    header = copy(f_in.get_header())
    header.nset = num_frame
Esempio n. 5
0
for icls in range(ncls):
    cls_average_RMSD[icls] /= float(cls_num_node[icls])

f_out = open('%s.cls_%s.centroids' % (prefix, cutoff_char),'w')
f_out.write('#clsID node  RMSD  RMSD/sqrt(nmp) <RMSD> <RMSD>/sqrt(nmp)\n')
for icls in range(ncls):
    f_out.write('%i %i %5.2f %f %5.2f %f\n' % (icls+1, cls_nearest_node[icls], 
            cls_nearest_RMSD[icls], cls_nearest_RMSD[icls]/math.sqrt(nmp),
            cls_average_RMSD[icls], cls_average_RMSD[icls]/math.sqrt(nmp)) )
f_out.write('\n')


dcd_out = DcdFile('%s.cls_%s.centroids.dcd' % (prefix, cutoff_char))
dcd_out.open_to_write()
dcd_out.set_header( dcd.get_header() )
dcd_out.write_header()

for icls in range(ncls):
    dcd_out.write_onestep( cls_centroids[icls] )
dcd_out.close()

#f_out.write('#centroid DCD\n')
#for icls in range(ncls):
#    f_out.write('%i' % (icls+1,))
#    for c in cls_centroids[icls]:
#        f_out.write(' %f' % (c,))
#    f_out.write('\n')
#f_out.write('\n')
#
#f_out.write('#nearest DCD\n')
Esempio n. 6
0
Created on 2011/05/25
@author: Naoto Hori
'''

import sys
from cafysis.file_io.dcd import DcdFile
from cafysis.file_io.pdb import PdbFile

if len(sys.argv) != 4:
    print(' Usage: % SCRIPT [input DCD] [input PDB] [output PDB] ')
    sys.exit(2)

dcd = DcdFile(sys.argv[1])
dcd.open_to_read()
dcd.read_header()
nmp = dcd.get_header().nmp_real

f_pdb = PdbFile(sys.argv[2])
f_pdb.open_to_read()
chains = f_pdb.read_all()
f_pdb.close()

f_out = PdbFile(sys.argv[3])
f_out.open_to_write()

ave = []
for i in range(nmp):
    xyz = [0.0, 0.0, 0.0]
    ave.append(xyz)

nframe = 0
Esempio n. 7
0
        idx = id_rep - 1

        ts = TsFile('%s/%s_%04i.ts' % (dir_in, name, id_rep))
        ts.open_to_read()
        ts.read_header()
        in_ts_files.append(ts)

        out_ts_files[idx].copy_header(ts)
        out_ts_files[idx].write_header()

        dcd = DcdFile('%s/%s_%04i.dcd' % (dir_in, name, id_rep))
        dcd.open_to_read()
        dcd.read_header()
        in_dcd_files.append(dcd)

        out_dcd_files[idx].set_header(dcd.get_header())
        out_dcd_files[idx].write_header()

    while in_dcd_files[0].has_more_data():
        for idx in range(id_end):
            (tsdata, tslines) = in_ts_files[idx].read_onestep()
            coord_matrix = in_dcd_files[idx].read_onestep()

            step = int(tsdata[0][in_ts_files[idx].head_col.step])
            label = int(tsdata[0][in_ts_files[idx].head_col.label])
            idx_out = label - 1

            if step == 1:
                (tsdata, tslines) = in_ts_files[idx].read_onestep()
                step = int(tsdata[0][in_ts_files[idx].head_col.step])
                label = int(tsdata[0][in_ts_files[idx].head_col.label])
Esempio n. 8
0
# 1 - 77 and 270 - 950
mask = []
for i in range(NATOM_TOTAL):
    if i in (309-1, 477-1, 519-1):
        mask.append(1)
    else:
        mask.append(0)

dcd = DcdFile('dcd/cM0.0300.dcd')
dcd.open_to_read()
dcd.read_header()

out_dcd = DcdFile('cM0.0300.fit665.dcd')
out_dcd.open_to_write()
out_dcd.set_header(dcd.get_header())
out_dcd.write_header()

#dcd.show_header()
k = 0
while dcd.has_more_data() :
    k += 1
    coords_dcd = dcd.read_onestep_np()
    
    rmsd = superimpose(ref.T, coords_dcd.T, mask)
    
    print(k, rmsd)
    out_dcd.write_onestep(coords_dcd)
        

dcd.close()
Esempio n. 9
0
 nstep_total_dcd = 0
 for (i_dir, d) in enumerate(dirs):
     in_ts = TsFile( '%s/%s.ts' % (d, name) )
     in_ts.open_to_read()
     in_ts.read_header()
 
     in_dcd = DcdFile( '%s/%s.dcd' % (d, name) )
     in_dcd.open_to_read()
     in_dcd.read_header()
 
     # For the first directory
     if i_dir == 0:
         out_ts.header_lines = in_ts.header_lines
         out_ts.copy_header( in_ts )
         out_ts.write_header()
         out_dcd.set_header( in_dcd.get_header() )
         out_dcd.write_header()
     else:
         # restartの場合は、最初のフレームを除外
         in_ts.read_onestep()
         in_dcd.read_onestep()
 
     nstep_dcd = 0
     while in_dcd.has_more_data():
         out_dcd.write_onestep( in_dcd.read_onestep() )
         nstep_dcd += 1
 
     nstep_ts = 0
     while in_ts.has_more_data():
         tsdata, tslines = in_ts.read_onestep()
         out_ts.write_onestep( tslines )