def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-mode', default='select_memb')
    parser.add_argument('-in_file', default=sys.argv[1])
    parser.add_argument('-name', default=None)
    args = vars(parser.parse_args())

    if args['mode'] == 'select_memb_old':
        # load pdb
        pdb = parse_PDB(args['in_file'], args['name'])
        res_in_memb = pymol_select_memb_old(pdb)
        print('select membrane_residues, resi %s' % '+'.join([str(a) for a in res_in_memb]))

    elif args['mode'] == 'print_num_memb_old':
        pdb = parse_PDB(args['in_file'], args['name'])
        res_in_memb = pymol_select_memb_old(pdb)
        print('num_in_memb %i' % len(res_in_memb))

    elif args['mode'] == 'select_memb':
        pdb = parse_PDB(args['in_file'], args['name'])
        memb_ress = memb_residues(pdb)
        print('select membrane_residues, resi %s' % '+'.join([str(r.res_num) for r in memb_ress]))

    else:
        print('no mode selected')
Ejemplo n.º 2
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-mode', default='select_memb')
    parser.add_argument('-in_file', default=sys.argv[1])
    parser.add_argument('-name', default=None)
    args = vars(parser.parse_args())

    if args['mode'] == 'select_memb_old':
        # load pdb
        pdb = parse_PDB(args['in_file'], args['name'])
        res_in_memb = pymol_select_memb_old(pdb)
        print('select membrane_residues, resi %s' %
              '+'.join([str(a) for a in res_in_memb]))

    elif args['mode'] == 'print_num_memb_old':
        pdb = parse_PDB(args['in_file'], args['name'])
        res_in_memb = pymol_select_memb_old(pdb)
        print('num_in_memb %i' % len(res_in_memb))

    elif args['mode'] == 'select_memb':
        pdb = parse_PDB(args['in_file'], args['name'])
        memb_ress = memb_residues(pdb)
        print('select membrane_residues, resi %s' %
              '+'.join([str(r.res_num) for r in memb_ress]))

    else:
        print('no mode selected')
def by_two_numbers():
    from mpl_toolkits.mplot3d import axes3d
    from PDB_Bfactor_by_list import repalce_Bfactor
    from MyPDB import parse_PDB
    by_6A = parse_atom_count(work_path+'6A.lst')
    by_12A = parse_atom_count(work_path+'12A.lst')
    results = {}

    slope6, intercept6 = 0.05, 30
    slope12, intercept12 = 0.05, 350

    for k, v6 in by_6A.items():
        results[k] = sigmoid(v6, slope6, intercept6) * sigmoid(by_12A[k], intercept12, intercept12)
        print(k, v6, by_12A[k], results[k])
    pdb = parse_PDB('3o7q.pdb')
    repalce_Bfactor(pdb, results, {'pdb': '3o7q.pdb', 'list': '6x12sigs.lst'})

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    x = np.arange(0, 400, 1)
    y = np.arange(0, 400, 1)
    X, Y = np.meshgrid(x, y)
    zs = np.array([sigmoid(x, slope=slope6, intercept=intercept6)*
                   sigmoid(y, slope=slope12, intercept=intercept12)
                   for x, y in zip(np.ravel(X), np.ravel(Y))])
    Z = zs.reshape(X.shape)

    ax.plot_surface(X, Y, Z)
    ax.set_xlabel('6A')
    ax.set_ylabel('12A')
    ax.set_zlabel('energy')

    plt.show()
def Bfactor_by_list(args):
    pdb = parse_PDB(args['pdb'])

    resnum_occupancy_dict = parse_Bfactor_list(args['list'])
    file_name = args['pdb'].split('.pdb')[0] + '_' + args['list'].split(
        '.')[0] + '.pdb'
    repalce_Bfactor(pdb, resnum_occupancy_dict, args, new_name=file_name)
Ejemplo n.º 5
0
def main():
    pdb = parse_PDB(sys.argv[1])
    for name, xyz in zip(['B', 'C', 'X'], [XYZ(7.5, 0, 0), XYZ(0, 7.5, 0), XYZ(7.5, 7.5, 7.5)]):
        new_chain = copy.deepcopy(pdb.chains['A'])
        new_chain.change_chain_name(name)
        new_chain.translate_xyz(xyz)
        pdb.add_chain(new_chain)
        pdb.renumber()
    write_PDB('test.pdb', pdb)
Ejemplo n.º 6
0
def main():
    pdb_file = sys.argv[1]
    pdb = parse_PDB(pdb_file)
    energy_table = parse_energy_table(pdb_file)
    polyval = MakeHydrophobicityGrade()

    for res in pdb.iter_all_res():
        cnt_6 = pdb.count_atoms_near_res(res, 6)
        cnt_12 = pdb.count_atoms_near_res(res, 12)
        print(res, burial_sigmoid(cnt_6, cnt_12))
def Bfactor_by_z(args):
    pdb = parse_PDB(args['pdb'])
    z_Bfactor_dict = {}
    for rsd in pdb.iter_all_res():
        if -15 <= rsd['CA'].xyz.z <= 15:
            z_Bfactor_dict[rsd.res_num] = 50
        else:
            z_Bfactor_dict[rsd.res_num] = 0
    new_file = args['pdb'].split('.pdb')[0] + '_z.pdb'
    repalce_Bfactor(pdb, z_Bfactor_dict, args, new_file)
Ejemplo n.º 8
0
def main():
    pdb_file = sys.argv[1]
    pdb = parse_PDB(pdb_file)
    energy_table = parse_energy_table(pdb_file)
    polyval = MakeHydrophobicityGrade()

    for res in pdb.iter_all_res():
        cnt_6 = pdb.count_atoms_near_res(res, 6)
        cnt_12 = pdb.count_atoms_near_res(res, 12)
        print(res, burial_sigmoid(cnt_6, cnt_12))
def setup_db(args):
    rost_db = parse_rost_db()
    failed = []
    logger = Logger('./db_setup.log')
    for k, v in rost_db.items():
        # if k != 'q9u6b8': continue
        logger.create_header('working on %s' % k)
        logger.log('seq: %s' % v['seq'])
        logger.log('pdb: %s' % v['pdb'])
        logger.log('chain: %s' % v['chain'])
        logger.log('ts: %s' % v['ts'])
        os.mkdir(k)
        os.chdir(k)

        # get pdb and extract chain
        download_pdb({'name': v['pdb'], 'path': './'})
        empty_pdb = MyPDB(name=v['pdb'])
        pdb = parse_PDB('pdb%s.ent' % v['pdb'])
        chain = pdb.chains[v['chain']]
        empty_pdb.add_chain(chain)
        write_PDB('%s_%s.pdb' % (k, v['chain']), empty_pdb)
        pdb_seq = extract_seq(empty_pdb)
        rdb_seq = AASeq(v['seq'])
        score, start, end = pdb_seq[v['chain']].align(rdb_seq)
        logger.log('pdb seq: %s' % pdb_seq[v['chain']].aligned)
        logger.log('rst seq: %s' % rdb_seq.aligned)

        # get spans and print xml
        spans = find_topo(v['ts'])

        new_spans = []
        for sp in spans:
            start = pdb_seq[v['chain']].aligned_position_at_non_aligned(
                sp[0]) + 1
            end = pdb_seq[v['chain']].aligned_position_at_non_aligned(
                sp[1]) + 1
            logger.log('span %i->%i %s moving to %i->%i' %
                       (sp[0], sp[1], sp[2], start, end))
            new_spans.append([start, end, sp[2]])
        create_AddMembrane_xml(new_spans, '%s_AddMembrane.xml' % v['pdb'])

        # create flags file
        with open('embed.flags', 'w+') as fout:
            fout.write(
                '-parser:protocol /home/labs/fleishman/jonathaw/elazaridis/protocols/embed_in_membrane.xml\n'
            )
            fout.write('-s %s\n' % '%s_%s.pdb' % (k, v['chain']))
            fout.write('-parser:script_vars add_memb_xml=%s\n' %
                       '%s_AddMembrane.xml' % v['pdb'])
            fout.write('-overwrite\n')
            fout.write('-score::elec_memb_sig_die\n')
            fout.write('-corrections::beta_nov15\n')
            fout.write('-score::memb_fa_sol\n')
        os.chdir('../')
Ejemplo n.º 10
0
def main():
    pdb = parse_PDB(sys.argv[1])
    for name, xyz in zip(
        ['B', 'C', 'X'],
        [XYZ(7.5, 0, 0), XYZ(0, 7.5, 0),
         XYZ(7.5, 7.5, 7.5)]):
        new_chain = copy.deepcopy(pdb.chains['A'])
        new_chain.change_chain_name(name)
        new_chain.translate_xyz(xyz)
        pdb.add_chain(new_chain)
        pdb.renumber()
    write_PDB('test.pdb', pdb)
def setup_db(args):
    rost_db = parse_rost_db()
    failed = []
    logger = Logger('./db_setup.log')
    for k, v in rost_db.items():
        # if k != 'q9u6b8': continue
        logger.create_header('working on %s' % k)
        logger.log('seq: %s' % v['seq'])
        logger.log('pdb: %s' % v['pdb'])
        logger.log('chain: %s' % v['chain'])
        logger.log('ts: %s' % v['ts'])
        os.mkdir(k)
        os.chdir(k)

        # get pdb and extract chain
        download_pdb({'name': v['pdb'], 'path': './'})
        empty_pdb = MyPDB(name=v['pdb'])
        pdb = parse_PDB('pdb%s.ent' % v['pdb'])
        chain = pdb.chains[v['chain']]
        empty_pdb.add_chain(chain)
        write_PDB('%s_%s.pdb' % (k, v['chain']), empty_pdb)
        pdb_seq = extract_seq(empty_pdb)
        rdb_seq = AASeq(v['seq'])
        score, start, end = pdb_seq[v['chain']].align(rdb_seq)
        logger.log('pdb seq: %s' % pdb_seq[v['chain']].aligned)
        logger.log('rst seq: %s' % rdb_seq.aligned)


        # get spans and print xml
        spans = find_topo(v['ts'])

        new_spans = []
        for sp in spans:
            start = pdb_seq[v['chain']].aligned_position_at_non_aligned(sp[0]) + 1
            end = pdb_seq[v['chain']].aligned_position_at_non_aligned(sp[1]) + 1
            logger.log('span %i->%i %s moving to %i->%i' %(sp[0], sp[1], sp[2], start, end))
            new_spans.append([start, end, sp[2]])
        create_AddMembrane_xml(new_spans, '%s_AddMembrane.xml' % v['pdb'])

        # create flags file
        with open('embed.flags', 'w+') as fout:
            fout.write('-parser:protocol /home/labs/fleishman/jonathaw/elazaridis/protocols/embed_in_membrane.xml\n')
            fout.write('-s %s\n' % '%s_%s.pdb' % (k, v['chain']))
            fout.write('-parser:script_vars add_memb_xml=%s\n' % '%s_AddMembrane.xml' % v['pdb'])
            fout.write('-overwrite\n')
            fout.write('-score::elec_memb_sig_die\n')
            fout.write('-corrections::beta_nov15\n')
            fout.write('-score::memb_fa_sol\n')
        os.chdir('../')
Ejemplo n.º 12
0
def main():
    global rosetta_splines
    rosetta_splines = calc_rosetta_splines()
    arg1 = sys.argv[1]
    if '.pdb' not in arg1:
        seq = arg1
        ori = sys.argv[2]
        dg = calc_seq_dg(seq, ori, rosetta_splines)
        print('%s %s %.2f' % (seq, ori, dg))

    else:
        pdb = parse_PDB(arg1)
        spans = find_spans_pdb(pdb)
        for span in spans:
            dg = calc_span_dg(pdb, span[0], span[1], rosetta_splines)
            print('span %i->%i ∆G=%.2f' % (span[0], span[1], dg))
Ejemplo n.º 13
0
def main():
    global rosetta_splines
    rosetta_splines = calc_rosetta_splines()
    arg1 = sys.argv[1]
    if '.pdb' not in arg1:
        seq = arg1
        ori = sys.argv[2]
        dg = calc_seq_dg(seq, ori, rosetta_splines)
        print('%s %s %.2f' % (seq, ori, dg))

    else:
        pdb = parse_PDB(arg1)
        spans = find_spans_pdb(pdb)
        for span in spans:
            dg = calc_span_dg(pdb, span[0], span[1], rosetta_splines)
            print('span %i->%i ∆G=%.2f' % (span[0], span[1], dg))
Ejemplo n.º 14
0
def main():
    import matplotlib.pyplot as plt
    import mpl_toolkits.mplot3d as m3d
    parser = argparse.ArgumentParser()
    parser.add_argument('-pdb')
    parser.add_argument('-s1', type=int)
    parser.add_argument('-e1', type=int)
    parser.add_argument('-s2', type=int)
    parser.add_argument('-e2', type=int)
    args = vars(parser.parse_args())

    pdb = parse_PDB(args['pdb'])
    l1, data1 = find_helix_vector(pdb, args['s1'], args['e1'])
    l2, data2 = find_helix_vector(pdb, args['s2'], args['e2'])

    p1, p2 = find_points_of_closest_distance(l1, l2)

    cross_angle = calc_dihedral(l1[0], p1, p2, l2[0])
    dist = np.linalg.norm(p1-p2)
    print('cross angle', cross_angle)
    print('dist', dist)
Ejemplo n.º 15
0
def test_input(args):
    if args['seq'] is None:
        pdb = parse_PDB(args['native_pdb'])
        seq_dict = pdb.get_seq()
        args['seq'] = seq_dict[args['chain']]
        if args['topo_string'] is None:
            args['topo_string'] = 'H' * len(args['seq'])
            args['logger'].log('NO TOPO-STRING GIVEN, using helix only, creating file')
            with open('%s.ts' % args['name'], 'w+') as fout:
                fout.write('>%s\n' % args['name'])
                fout.write('%s' % args['topo_string'])
        args['logger'].log('NO SEQ GIVEN, using %s, %i AAs' % (args['seq'], len(args['seq'])))

    ok = len(args['seq']) == len(args['topo_string'])
    if args['mode'] == 'fnd':
        args['xml'] = fnd_protocol
    elif args['mode'] == 'design':
        args['xml'] = design_protocol
    else:
        sys.exit('mode was neither design nor fnd...')
    if not ok:
        sys.exit('sequence and topo string not same length')
def by_two_numbers():
    from mpl_toolkits.mplot3d import axes3d
    from PDB_Bfactor_by_list import repalce_Bfactor
    from MyPDB import parse_PDB
    by_6A = parse_atom_count(work_path + '6A.lst')
    by_12A = parse_atom_count(work_path + '12A.lst')
    results = {}

    slope6, intercept6 = 0.05, 30
    slope12, intercept12 = 0.05, 350

    for k, v6 in by_6A.items():
        results[k] = sigmoid(v6, slope6, intercept6) * sigmoid(
            by_12A[k], intercept12, intercept12)
        print(k, v6, by_12A[k], results[k])
    pdb = parse_PDB('3o7q.pdb')
    repalce_Bfactor(pdb, results, {'pdb': '3o7q.pdb', 'list': '6x12sigs.lst'})

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    x = np.arange(0, 400, 1)
    y = np.arange(0, 400, 1)
    X, Y = np.meshgrid(x, y)
    zs = np.array([
        sigmoid(x, slope=slope6, intercept=intercept6) *
        sigmoid(y, slope=slope12, intercept=intercept12)
        for x, y in zip(np.ravel(X), np.ravel(Y))
    ])
    Z = zs.reshape(X.shape)

    ax.plot_surface(X, Y, Z)
    ax.set_xlabel('6A')
    ax.set_ylabel('12A')
    ax.set_zlabel('energy')

    plt.show()
Ejemplo n.º 17
0
#!/usr/bin/env python3.5
from MyPDB import parse_PDB, extract_seq
import sys

in_1 = sys.argv[1]
in_2 = sys.argv[2]

pdb_1 = parse_PDB(in_1, in_1.split('.')[0])
pdb_2 = parse_PDB(in_2, in_2.split('.')[0])

seqs_1 = extract_seq(pdb_1)
seqs_2 = extract_seq(pdb_2)
assert seqs_1.keys() == seqs_2.keys(), 'PDBs have different chain names'

seq_1, seq_2 = '', ''
for chain_name in sorted(seqs_1.keys()):
	seq_1 += seqs_1[chain_name].get_seq
	seq_2 += seqs_2[chain_name].get_seq
assert len(seq_1) == len(seq_2), 'sequences not the same length'
diffs = []
for i in range(len(seq_1)):
	if seq_1[i] != seq_2[i]:
		print('%s%i%s' % (seq_1[i], i+1, seq_2[i]))
		diffs.append(i+1)
print('found %i changes, over %i chains' % (len(diffs), len(seqs_1.keys())))
print('select diffs, resi %s' % '+'.join([str(a) for a in diffs]))
Ejemplo n.º 18
0
#!/usr/bin/env python3.5
from MyPDB import parse_PDB, extract_seq
import sys

in_1 = sys.argv[1]
in_2 = sys.argv[2]

pdb_1 = parse_PDB(in_1, in_1.split('.')[0])
pdb_2 = parse_PDB(in_2, in_2.split('.')[0])

seqs_1 = extract_seq(pdb_1)
seqs_2 = extract_seq(pdb_2)
assert seqs_1.keys() == seqs_2.keys(), 'PDBs have different chain names'

seq_1, seq_2 = '', ''
for chain_name in sorted(seqs_1.keys()):
    seq_1 += seqs_1[chain_name].get_seq
    seq_2 += seqs_2[chain_name].get_seq
assert len(seq_1) == len(seq_2), 'sequences not the same length'
diffs = []
for i in range(len(seq_1)):
    if seq_1[i] != seq_2[i]:
        print('%s%i%s' % (seq_1[i], i + 1, seq_2[i]))
        diffs.append(i + 1)
print('found %i changes, over %i chains' % (len(diffs), len(seqs_1.keys())))
print('select diffs, resi %s' % '+'.join([str(a) for a in diffs]))
Ejemplo n.º 19
0
#!/usr/bin/env python3.5
from MyPDB import parse_PDB
from sys import argv
name = argv[1]
pdb = parse_PDB(file_in=name, name=name)
seq = pdb.seqs
if len(argv) > 2:
    chains = argv[2:]
    for c in chains:
        print('>%s.%s' % (name, c))
        print(seq[c].get_seq)
else:
    for c in sorted(seq.keys()):
        if 'non_res' not in c:
            print('>%s.%s' % (name, c))
            print(seq[c].get_seq)