def generate_aotoencoder_traindata(): file = open('pdbname.txt') errorlog = open('wrong_pdb.txt', 'a') writer1 = tf.python_io.TFRecordWriter( 'autoencoder_traindata/train.tfrecords') writer2 = tf.python_io.TFRecordWriter( 'autoencoder_traindata/test.tfrecords') lines = file.readlines() count = 0 for line in lines: count += 1 print count, line.strip() arg = ['pdbfile=samermax_pisa_pdb/' + line.strip()] try: cube = np.zeros((32, 32, 32)) cube[:31, :31, :31] = pdb2voxel.run(arg) cube = cube.astype(int) cube_list = cube.flatten() example = tf.train.Example(features=tf.train.Features( feature={ "data": tf.train.Feature(int64_list=tf.train.Int64List( value=cube_list)), #require a list of int })) if count % 5 == 0: writer2.write(example.SerializeToString()) else: writer1.write(example.SerializeToString()) except: errorlog.write(line) writer1.close() writer2.close() errorlog.close() file.close()
def create_tfrecords(): file=open('pdbname.txt') errorlog=open('wrong_pdb.txt','a') writer=tf.python_io.TFRecordWriter('train.tfrecords') writer2=tf.python_io.TFRecordWriter('test.tfrecords') lines=file.readlines() count=0 for line in lines: count+=1 print count,line.split('\n')[0] arg=['pdbfile='+line.split('\n')[0]] try: cube=pdb2voxel.run(arg) cube=cube.astype(int) cube_list=cube.flatten() example = tf.train.Example(features=tf.train.Features(feature={ "data": tf.train.Feature(int64_list=tf.train.Int64List(value=cube_list)), #require a list of int })) if count%5==0: writer2.write(example.SerializeToString()) else: writer1.write(example.SerializeToString()) except: errorlog.write(line) writer1.close() writer2.close() errorlog.close() file.close()
def generate_gene(): f = open('pdbname.txt') pdbnames = f.readlines() f.close() pdbnames = np.array(pdbnames) pdbnames = np.sort(pdbnames) saved_model_path = 'train_autoencoder/model' in_tensor_find, z_tensor_find, out_tensor_find = auto_encoder_z.generate_session( 1) saver = tf.train.Saver() with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess: model_path = tf.train.latest_checkpoint(saved_model_path) saver.restore(sess, model_path) for pdbname in pdbnames: try: pdbname = pdbname.strip() inpdbfile = 'samermax_pisa_pdb/' + pdbname outpdbfile = 'pisa_data_gene/' + pdbname.split('.')[0] + '.txt' voxel = pdb2voxel.run(['pdbfile=%s' % inpdbfile]) in_ = np.zeros(shape=(1, 32, 32, 32, 1)) in_[0, :31, :31, :31, 0] = voxel z_ = sess.run(z_tensor_find[0], feed_dict={in_tensor_find[0]: in_}) z_ = z_.reshape((-1, 1)) np.savetxt('%s' % outpdbfile, z_, fmt='%.3f') except: print '%s error!!!!!!!!!!!!!!!!!!!!!!!!!!!!' % pdbname
def generate_samermax_pdb(pdbname): #pisa try: pdbname = pdbname.strip() #cavitymodel=model_interface.build_model(pdbfile,'pdb',20,None) voxel = pdb2voxel.run(['pdbfile=rotate_pisa_pdb/%s' % pdbname]) voxel2pdb.write_pdb(voxel, 'samermax_pisa_pdb/%s' % pdbname, 70) except: print '%s error!!!!!!!!!!!!!!!!!!!!!!!!!!!!' % pdbname fw = open('wrong_samples.txt', 'a') fw.write('%s\n' % pdbname) fw.close()
def write2pdb(group, rmax, output_folder): num = len(group) os.system('mkdir %s/sub2' % output_folder) os.system('mkdir %s/sub3' % output_folder) for ii in range(num): voxel2pdb.write_pdb(group[ii], '%s/sub2/%d.pdb' % (output_folder, ii), rmax) fix = '%s/sub2/0.pdb' % output_folder data = [] for ii in range(num): mov = '%s/sub2/%d.pdb' % (output_folder, ii) align.run(fix, mov, '%s/sub3/%d.pdb' % (output_folder, ii)) voxel = pdb2voxel.run(['pdbfile=%s/sub3/%d.pdb' % (output_folder, ii)]) data.append(voxel) data = np.array(data) data = np.mean(data, axis=0) data = np.greater(data, 0.5).astype(int) voxel2pdb.write_pdb(data, '%s/out.pdb' % output_folder, rmax) os.system('rm -rf %s/sub2' % output_folder) os.system('rm -rf %s/sub3' % output_folder)
def generate_iq(filename): #pisa iq_file = 'saxs_sample.txt' iq_data = np.loadtxt(iq_file, delimiter=' ', dtype=float) filename = filename.strip() try: t_voxel = pdb2voxel.run(['pdbfile=samermax_pisa_pdb/%s' % filename]) #cavitymodel=model_interface.build_model(inpdbfile,'pdb',20,None) #rmax=cavitymodel.rmax*0.9 rmax = 70 iq_t_curve, t_exp_data = map2iq.run_get_voxel_iq( t_voxel, iq_file, rmax) iq_t_curve = np.array(iq_t_curve) iq_t_curve = iq_t_curve / iq_t_curve[0] cacl_iq = np.concatenate( [iq_data[:, 0].reshape(-1, 1), iq_t_curve.reshape(-1, 1)], axis=1) np.savetxt('pisa_data_iq/%s.iq' % filename.split(".")[0], cacl_iq, fmt='%f') except: print "%serror!!!!!!!!!!!!!!!!" % filename
def write2pdb(group, rmax, output_folder, iq_file=None, target_pdb=None): if iq_file is not None: tar_iq_curve = np.loadtxt(iq_file, usecols=(0)) tar_iq_curve = tar_iq_curve.reshape(-1, 1) num = len(group) os.system('mkdir %s/sub2' % output_folder) os.system('mkdir %s/sub3' % output_folder) for ii in range(num): voxel2pdb.write_pdb(group[ii], '%s/sub2/%d.pdb' % (output_folder, ii), rmax) fix = '%s/sub2/0.pdb' % output_folder data = [] for ii in range(num): mov = '%s/sub2/%d.pdb' % (output_folder, ii) align.run(fix, mov, '%s/sub3/%d.pdb' % (output_folder, ii)) voxel = pdb2voxel.run(['pdbfile=%s/sub3/%d.pdb' % (output_folder, ii)]) data.append(voxel) data = np.array(data) data = np.mean(data, axis=0) ccp4data = np.copy(data) data = np.greater(data, 0.3).astype(int) if iq_file is not None: iq_curve, exp_data = map2iq.run_get_voxel_iq(data, iq_file, rmax) iq_curve = np.array(iq_curve) #iq_curve=iq_curve/iq_curve[0] newiq_curve = np.concatenate((tar_iq_curve, iq_curve.reshape((-1, 1))), axis=1) np.savetxt('%s/final_saxs.txt' % output_folder, newiq_curve) voxel2pdb.write_pdb(data, '%s/out.pdb' % output_folder, rmax) ''' if iq_file is not None: out_voxel=pdb2voxel.run(['pdbfile=%s/out.pdb'%output_folder]) out_curve,exp_data=map2iq.run_get_voxel_iq(out_voxel,iq_file,rmax) out_curve=np.array(out_curve) out_curve=out_curve/out_curve[0] newout_curve=np.concatenate((tar_iq_curve,out_curve.reshape((-1,1))),axis=1) np.savetxt('%s/final_pdb_saxs.txt'%output_folder,newout_curve) ''' ccp4data = flex.double(ccp4data) pdb2zernike.ccp4_map_type(ccp4data, 15, rmax / 0.9, file_name='%s/out.ccp4' % output_folder) shiftrmax = rmax / 0.9 args = [ 'fix=%s/out.ccp4' % output_folder, 'typef=ccp4', 'mov=%s/out.pdb' % output_folder, 'rmax=%f' % shiftrmax ] zalign.run(args, output_folder) os.system('rm -r %s/sub2' % output_folder) os.system('rm -r %s/sub3' % output_folder) if target_pdb is not None: args = [ 'fix=%s/out.ccp4' % output_folder, 'typef=ccp4', 'mov=%s' % target_pdb, 'rmax=%f' % shiftrmax ] zalign.run(args, output_folder) if 'sample.pdb' in os.listdir(output_folder): args = [ 'fix=%s/out.ccp4' % output_folder, 'typef=ccp4', 'mov=%s/sample.pdb' % output_folder, 'rmax=%f' % shiftrmax ] zalign.run(args, output_folder)