def test_generate_json_tet_p5LD3(): name = "test" entire_sequence = "MMMSPEDEIQSLEEKNSQLKQEISQLEEKNQQLKYGELKQLEEELQAIEEQLAQLQWKAQARKEKLAQLKGKGDGELKQLEEELQAIEEQLAQLQWKAQARKEKLAQLKGKGDGSPEDKISQLKEENQQLEQKIQQLKEENSQLEYGGDGKGLEHHHHH" segments_str = """ SPED EIQSLEE KNSQLKQ EISQLEE KNQQLKY G P7mS GKGDG ELKQLEE ELQAIEE QLAQLQW KAQARKE KLAQLK APHshort GKGDG ELKQLEE ELQAIEE QLAQLQW KAQARKE KLAQLK APHshort GKGDG SPED KISQLKE ENQQLEQ KIQQLKE ENSQLEY G P8mS GDGKG """ pairs = [{ "pair": ["APHshort", "APHshort"], "type": "A", "chains": ["A", "B"], "template": "APH.pdb" }, { "pair": ["P7mS", "P8mS"], "type": "P", "chains": ["A", "B"], "template": "p7_p8.pdb" }] out_name = tempfile.NamedTemporaryFile().name mj.generate_json(name, entire_sequence, segments_str, pairs, out_name=out_name) d = u.load_json_data(out_name) assert d.name == name assert d.entire_sequence == entire_sequence assert len(d.segments) == 4 assert d.segments[0].id == 1 assert d.segments[0].start == 4 assert d.segments[0].end == 4 + 33 - 1 assert d.segments[0].pair_id == 4 assert d.segments[0].pair_type == "P" assert d.segments[0].pdb_template == "p7_p8.pdb" assert d.segments[0].pdb_chain == "A" assert d.segments[2].id == 3 assert d.segments[2].start == 76 assert d.segments[2].end == 109 assert d.segments[2].pair_id == 2 assert d.segments[2].pair_type == "A" assert d.segments[2].pdb_template == "APH.pdb" assert d.segments[2].pdb_chain == "B" os.remove(out_name)
type=str) parser.add_argument( '-r', '--rand-seed', help= 'Random seed. For modeler it mist be between -2 and -50000. If none, a random number will be chosen', default=None, type=int) args = parser.parse_args() if args.rand_seed is None: import random args.rand_seed = random.randint(-50000, -2) d = u.load_json_data(args.json) env = environ(rand_seed=args.rand_seed) log.verbose() # request verbose output if args.out_dir is None: args.out_dir = d.name + u.id_generator() if not os.path.exists(args.out_dir): os.makedirs(args.out_dir) #convert to absolute path before chdir args.alnfile = os.path.abspath(args.alnfile) os.chdir(args.out_dir)
def test_find_pair(): json = u.relative_to(__file__, 'data/data.json') d = u.load_json_data(json) p1, p2, pdb = u.find_pair('APHshE', d.segments) assert p1 == d.segments[4]['id'] - 1
def chimera_color(json_file, out_file, model_number="", verbose=True, color_map=None, default_color="#d2d2b4b48c8c", add_surface=True, thick_vdw_size=2.5, default_vdw_size=1.7, print_thick_vdw=False): """Print scipt for coloring in chimera""" d = u.load_json_data(json_file) with open(out_file + '.chimera', 'w') as f: def print_segment(s, vdw_size=None): template = """color {color} #{model}:{start}-{end}""" s['model'] = model_number s['vdw_size'] = vdw_size #override the color of segments if map is present if not color_map is None: s['color'] = color_map.get(s.name, s.get('color', default_color)) else: s['color'] = s.get('color', default_color) line = template.format(**s) print_and_write("#" + s.name, f, verbose) print_and_write(line, f, verbose) if vdw_size: #define the VDW scale line = """vdwdefine {vdw_size} #{model}:{start}-{end}""".format( **s) print_and_write(line, f, verbose) #color the model with the default color (the color for the linkers) print_and_write("#Default model color and vdw size", f, verbose) line = "color {color} #{model}".format(color=default_color, model=model_number) print_and_write(line, f, verbose) line = "vdwdefine {vdw_size} #{model}".format( vdw_size=default_vdw_size, model=model_number) print_and_write(line, f, verbose) #group the commands by pairs of segments printed_segments_ids = [] for s in d.segments: if not s.id in printed_segments_ids: print_segment(s) print_segment(d.segments[s.pair_id - 1]) printed_segments_ids.extend([s.id, s.pair_id]) if add_surface: print_and_write("", f, verbose) line = "surface probeRadius 3 vertexDensity 2 allComponents false protein" print_and_write(line, f, verbose) line = "surface probeRadius 3 vertexDensity 2 allComponents false protein" line = "transparency 80,s #{model}:".format(model=model_number) print_and_write(line, f, verbose) if print_thick_vdw: print_and_write("", f, verbose) print_and_write("#Thicker segments", f, verbose) printed_segments_ids = [] for s in d.segments: if not s.id in printed_segments_ids: print_segment(s, thick_vdw_size) print_segment(d.segments[s.pair_id - 1], thick_vdw_size) printed_segments_ids.extend([s.id, s.pair_id])
) parser.add_argument("-v", "--verbose", default=True, help='print scripts to screen') parser.add_argument( "-m", "--color-map", default=None, help= 'colormap to override colors given in the json. Works even if no colors are present in the Json' ) parser.add_argument( "-t", "--thick_vdw", default=True, help='Print specification for thicker segments (for movie creation).') a = parser.parse_args() if a.out_file is None: a.out_file = a.json.replace('.json', '') if not a.color_map is None: a.color_map = u.load_json_data(a.color_map) chimera_color(a.json, a.out_file, verbose=a.verbose, color_map=a.color_map, print_thick_vdw=a.thick_vdw)
from modeller import * if __name__ == "__main__": parser = argparse.ArgumentParser(__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('-j', '--json', help="json file name", default='data.json') parser.add_argument('-aln', '--alignment', help="alignment file name", default='alignment-file.ali') parser.add_argument('-p', '--path', help="path to template pdb files", default=None) args = parser.parse_args() if args.path is None: #the default path should be raltive to the scripts directroy args.path = u.relative_to(__file__,'../building_blocks') d = u.load_json_data(args.json) #read json file aln_str = d.entire_sequence with open(args.alignment, 'w') as f1: for pair in d.pairs: #go through all CC pairs pair_1_id, pair_2_id, pdbname = u.find_pair(pair['pair'][0], d.segments) pair_name = d.segments[pair_1_id].name + "_" + d.segments[pair_2_id].name md_obj = md.load(os.path.join(args.path, pdbname)) topology = md_obj.topology #read topology position = md_obj.xyz #and position from pdb file pair_1_seq = u.mdtraj_to_fasta(topology,0) pair_2_seq = u.mdtraj_to_fasta(topology,1) #convert topology to fasta sequence
parser.add_argument('-j', '--json', help='Json file from which to load aminoacid sequnce.', type=str) parser.add_argument('-e', '--auto-exit', help='Exit at the end of script', type=bool, default=True) a = parser.parse_args() if not a.json is None: d = u.load_json_data(a.json) a.seq = d.entire_sequence chimera_path = 'chimera' script_dir = os.path.dirname(os.path.realpath(__file__)) chimera_flags = "" #"--nogui" if a.debug: chimera_flags += " --debug" cmd = "bash -c \"{path} {flags} --script '{script_dir}/make_helix_chimera.py --out-file={out_file} --seq={seq} --auto-exit={ae} '\"".format( path=chimera_path, flags=chimera_flags, script_dir=script_dir, out_file=a.out_file, seq=a.seq,