def parse_residues_file(self) -> dict: pdb = mp.parse_PDB( '/home/labs/fleishman/jonathaw/temp_residue_data/RKDS.txt') for res in pdb['A'].values(): mpf.translate_and_rotate_res_to_xy_plane( res, self.main_residue_atoms[res.res_type]) self.residues[res.res_type] = res
def draw_hbonds_profiles(): parser = argparse.ArgumentParser() parser.add_argument('-pdb') parser.add_argument('-stage', type=int) args = vars(parser.parse_args()) pdb = my.parse_PDB(args['pdb']) if args['stage'] == 1: seq_length = pdb.seq_length() command = "for i in `seq 1 %i`;do ~/bin/fleish_sub_general.sh /home/labs/fleishman/jonathaw/Rosetta/main/source/bin/rosetta_scripts.default.linuxgccrelease -parser:protocol ~/elazaridis/protocols/scan_hbonds.xml -s %s -mp:scoring:hbond -corrections::beta_nov15 -score:elec_memb_sig_die -score:memb_fa_sol -overwrite -out:prefix ${i}_ -script_vars energy_function=beta_nov15_elazaridis res_num=${i} s1=%i e1=%i ori1=%s s2=%i e2=%i ori2=%s ;done" % (seq_length, args['pdb'], 1, 24, 'out2in', 25, 48, 'out2in') print('issuing command\n%s' % command) os.system(command) if args['stage'] == 2: os.system("head -2 1_score.sc|tail -1 > all_score.sc") os.system("grep SCORE: *_score.sc|grep -v des >> all_score.sc") z_dict = {id: res.memb_z for id, res in pdb.res_items()} pos_dict = {v: k for k, v in z_dict.items()} sc_df = Rf.score_file2df('all_score.sc') zs, scs = [], [] for d, sc in zip(sc_df['description'].values, sc_df['a_e_res']): zs.append(z_dict[ int( d.split('_')[0] ) ]) scs.append(sc) plt.scatter(zs, scs) for z, sc in zip(zs, scs): if z is not None: plt.annotate(pos_dict[z], xy=(z, sc), xytext=(-20, 20), textcoords = 'offset points', ha = 'right', va = 'bottom', bbox = dict(boxstyle = 'round,pad=0.5', fc = 'yellow', alpha = 0.5), arrowprops = dict(arrowstyle = '->', connectionstyle = 'arc3,rad=0')) plt.show()
def pdb2interface(pdb_name: str, chain: str): """ :param pdb: a pdb name :param chain: a chain :return: creates a list of residues for any interface of chain with other chains with seq isentity < 0.95 """ results = {} pdb_path = find_pdb(pdb_name) pdb = mp.parse_PDB(file_in=pdb_path, name=pdb_name, with_non_residue=False) if len(list(pdb.seqs.keys())) < 2: return None wanted_seq = pdb.seqs[chain] for ch_id, ch_seq in pdb.seqs.items(): if ch_id != chain: score = wanted_seq.align(ch_seq) if wanted_seq.aligned_identity(ch_seq) < 0.95: interface = mp.interface_residues(pdb[chain], pdb[ch_id]) results[ch_id] = sorted([a.res_num for a in interface]) out_path = '/'.join(pdb_path.split('/')[:-1])+'/'+pdb_name+'_'+chain+'_result.txt' with open(out_path, 'w+') as fout: fout.write('name %s\n' % pdb_name) fout.write('chain %s\n' % chain) for ch, inter in results.items(): fout.write('%s %s\n' % (ch, ' '.join([str(a) for a in inter]))) fout.write('seq %s %s\n' % (ch, pdb.seqs[ch].get_seq()))
def pdb2interface(pdb_name: str, chain: str): """ :param pdb: a pdb name :param chain: a chain :return: creates a list of residues for any interface of chain with other chains with seq isentity < 0.95 """ results = {} pdb_path = find_pdb(pdb_name) pdb = mp.parse_PDB(file_in=pdb_path, name=pdb_name, with_non_residue=False) if len(list(pdb.seqs.keys())) < 2: return None wanted_seq = pdb.seqs[chain] for ch_id, ch_seq in pdb.seqs.items(): if ch_id != chain: score = wanted_seq.align(ch_seq) if wanted_seq.aligned_identity(ch_seq) < 0.95: interface = mp.interface_residues(pdb[chain], pdb[ch_id]) results[ch_id] = sorted([a.res_num for a in interface]) out_path = '/'.join(pdb_path.split('/') [:-1]) + '/' + pdb_name + '_' + chain + '_result.txt' with open(out_path, 'w+') as fout: fout.write('name %s\n' % pdb_name) fout.write('chain %s\n' % chain) for ch, inter in results.items(): fout.write('%s %s\n' % (ch, ' '.join([str(a) for a in inter]))) fout.write('seq %s %s\n' % (ch, pdb.seqs[ch].get_seq()))
def main(): pdb_name = sys.argv[1] output_file = pdb_name.split('.pdb')[0] + '_MBR.pdb' pdb = MyPDB.parse_PDB(pdb_name) memb_chain = determine_membrane_chain(pdb) highet_atom_number = determine_highest_serial_num(pdb) create_and_add_MBR_residue(pdb, memb_chain, highet_atom_number) MyPDB.write_PDB(output_file, pdb)
def main(): pdb_name = sys.argv[1] output_file = pdb_name.split('.pdb')[0] + '_MBR.pdb' pdb = MyPDB.parse_PDB(pdb_name) memb_chain = determine_membrane_chain(pdb) highet_atom_number = determine_highest_serial_num(pdb) create_and_add_MBR_residue(pdb, memb_chain, highet_atom_number) MyPDB.write_PDB(output_file, pdb) append_CONECT_to_PDB(output_file, highet_atom_number)
def main(): pdb_name = sys.argv[1] chain = sys.argv[2] start, end = sys.argv[3], sys.argv[4] pdb = MyPDB.parse_PDB(pdb_name) for rid, r in pdb[chain]: if rid > 1: print(rid, r.phi(pdb[chain][rid-1])) if rid < len(pdb[chain]): print(rid, r.psi(pdb[chain][rid+1])) MyPDB.draw_ramachadran(pdb)
def main(): pdb_name = sys.argv[1] chain = sys.argv[2] start, end = sys.argv[3], sys.argv[4] pdb = MyPDB.parse_PDB(pdb_name) for rid, r in pdb[chain]: if rid > 1: print(rid, r.phi(pdb[chain][rid - 1])) if rid < len(pdb[chain]): print(rid, r.psi(pdb[chain][rid + 1])) MyPDB.draw_ramachadran(pdb)
def test_symm_axis_interface(e: Entry, ch: str) -> bool: print(e) inter_resi = e.interface[ch] print(e.symm_segs) symm_resi = [a for seg in e.symm_segs for a in range(seg[0], seg[1]+1)] print('symm_resi', symm_resi) print(inter_resi) pdb = mp.parse_PDB(find_pdb(e.pdb), with_non_residue=False) symm_com = mp.com_residues(chain=pdb[e.chain], residues=symm_resi) print(symm_resi, symm_com) pdb.translate_xyz(mp.XYZ(0, 0, 0)-symm_com) print('pdb translated') print('writing pdb %s_%s_translated.pdb' % (e.pdb, e.chain)) mp.write_PDB('%s_%s_translated.pdb' % (e.pdb, e.chain), pdb) print('now symm com is at', mp.com_residues(chain=pdb[e.chain], residues=symm_resi)) print('symm axis XYZ %r' % (e.symm_axis)) print_pymol_select(e)
def test_symm_axis_interface(e: Entry, ch: str) -> bool: print(e) inter_resi = e.interface[ch] print(e.symm_segs) symm_resi = [a for seg in e.symm_segs for a in range(seg[0], seg[1] + 1)] print('symm_resi', symm_resi) print(inter_resi) pdb = mp.parse_PDB(find_pdb(e.pdb), with_non_residue=False) symm_com = mp.com_residues(chain=pdb[e.chain], residues=symm_resi) print(symm_resi, symm_com) pdb.translate_xyz(mp.XYZ(0, 0, 0) - symm_com) print('pdb translated') print('writing pdb %s_%s_translated.pdb' % (e.pdb, e.chain)) mp.write_PDB('%s_%s_translated.pdb' % (e.pdb, e.chain), pdb) print('now symm com is at', mp.com_residues(chain=pdb[e.chain], residues=symm_resi)) print('symm axis XYZ %r' % (e.symm_axis)) print_pymol_select(e)
def main(): pdb_name = sys.argv[1] residue_num = int(sys.argv[2]) pdb = MyPDB.parse_PDB(pdb_name) res = pdb['A'][residue_num] CO = np.array([res['C'].xyz.x, res['C'].xyz.y, res['C'].xyz.z]) CA = np.array([res['CA'].xyz.x, res['CA'].xyz.y, res['CA'].xyz.z]) CB = np.array([res['CB'].xyz.x, res['CB'].xyz.y, res['CB'].xyz.z]) N = np.array([res['N'].xyz.x, res['N'].xyz.y, res['N'].xyz.z]) # HA = np.array([res['HA'].xyz.x, res['HA'].xyz.y, res['HA'].xyz.z]) v1 = N - CO v2 = CA - CO cp = np.cross(v1, v2) # HA_infront = cp.dot(HA-CA) > 0 CB_infront = cp.dot(CB - CA) > 0 print('residue %r, is %s ' % (res, res.D_or_L()))
def main(): pdb_name = sys.argv[1] residue_num = int(sys.argv[2]) pdb = MyPDB.parse_PDB(pdb_name) res = pdb['A'][residue_num] CO = np.array([res['C'].xyz.x, res['C'].xyz.y, res['C'].xyz.z]) CA = np.array([res['CA'].xyz.x, res['CA'].xyz.y, res['CA'].xyz.z]) CB = np.array([res['CB'].xyz.x, res['CB'].xyz.y, res['CB'].xyz.z]) N = np.array([res['N'].xyz.x, res['N'].xyz.y, res['N'].xyz.z]) # HA = np.array([res['HA'].xyz.x, res['HA'].xyz.y, res['HA'].xyz.z]) v1 = N - CO v2 = CA - CO cp = np.cross(v1, v2) # HA_infront = cp.dot(HA-CA) > 0 CB_infront = cp.dot(CB-CA) > 0 print('residue %r, is %s ' % (res, res.D_or_L()))
#!/usr/bin/env python3.5 __author__ = 'jonathan' from AASeq import compare_2_seqs import seq_funcs as sf import MyPDB if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() parser.add_argument('-mode', type=str, default='pdbs', help='different running modes.\npdbs=from two pdbs') parser.add_argument('-1', type=str, help='first entry') parser.add_argument('-2', type=str, help='second entry') args = vars(parser.parse_args()) if args['mode'] == 'pdbs': pdb_1 = MyPDB.parse_PDB(args['1'], args['1']) pdb_2 = MyPDB.parse_PDB(args['2'], args['2']) seq_1 = MyPDB.extract_seq(pdb_1) seq_2 = MyPDB.extract_seq(pdb_2) start = 0 sorted_keys = sorted(seq_1.keys()) for k in sorted_keys: compare_2_seqs(seq_1[k], seq_2[k], start=start) start += len(seq_1[k]) print(start, len(seq_1[k]))
def parse_residues_file(self) -> dict: pdb = mp.parse_PDB("/home/labs/fleishman/jonathaw/temp_residue_data/RKDS.txt") for res in pdb["A"].values(): mpf.translate_and_rotate_res_to_xy_plane(res, self.main_residue_atoms[res.res_type]) self.residues[res.res_type] = res
#!/usr/bin/env python3.5 __author__ = 'jonathan' from AASeq import compare_2_seqs import seq_funcs as sf import MyPDB if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() parser.add_argument('-mode', type=str, default='pdbs', help='different running modes.\npdbs=from two pdbs') parser.add_argument('-1', type=str, help='first entry') parser.add_argument('-2', type=str, help='second entry') args = vars(parser.parse_args()) if args['mode'] == 'pdbs': pdb_1 = MyPDB.parse_PDB(args['1'], args['1']) pdb_2 = MyPDB.parse_PDB(args['2'], args['2']) seq_1 = MyPDB.extract_seq(pdb_1) seq_2 = MyPDB.extract_seq(pdb_2) start = 0 sorted_keys = sorted(seq_1.keys()) for k in sorted_keys: compare_2_seqs(seq_1[k], seq_2[k], start=start) start += len(seq_1[k]) print(start, len(seq_1[k]))