コード例 #1
0
 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
コード例 #2
0
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()
コード例 #3
0
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()))
コード例 #4
0
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()))
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
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)
コード例 #11
0
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()))
コード例 #12
0
ファイル: is_D_AA.py プロジェクト: jonathaw/general_scripts
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()))
コード例 #13
0
#!/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]))
コード例 #14
0
 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
コード例 #15
0
#!/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]))