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()
示例#5
0
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)