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()
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
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
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')
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
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])
# 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()
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 )