1.先多模版比对
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| from modeller import * log.verbose() env = environ() env.io.atom_files_directory = './:../atom_files/' aln = alignment(env) for (code, chain) in (('3F1O', 'A'), ('3H7W', 'A'), ('3H82', 'A')): mdl = model(env, file=code, model_segment=('FIRST:'+chain, 'LAST:'+chain)) aln.append_model(mdl, atom_files=code, align_codes=code+chain) for (weights, write_fit, whole) in (((1., 0., 0., 0., 1., 0.), False, True), ((1., 0.5, 1., 1., 1., 0.), False, True), ((1., 1., 1., 1., 1., 0.), True, False)): aln.salign(rms_cutoff=3.5, normalize_pp_scores=False, rr_file='$(LIB)/as1.sim.mat', overhang=30, gap_penalties_1d=(-450, -50), gap_penalties_3d=(0, 3), gap_gap_score=0, gap_residue_score=0, dendrogram_file='fm00495.tree', alignment_type='tree', feature_weights=weights, improve_alignment=True, fit=True, write_fit=write_fit, write_whole_pdb=whole, output='ALIGNMENT QUALITY') aln.write(file='fm00495.pap', alignment_format='PAP') aln.write(file='fm00495.ali', alignment_format='PIR') aln.salign(rms_cutoff=1.0, normalize_pp_scores=False, rr_file='$(LIB)/as1.sim.mat', overhang=30, gap_penalties_1d=(-450, -50), gap_penalties_3d=(0, 3), gap_gap_score=0, gap_residue_score=0, dendrogram_file='1is3A.tree', alignment_type='progressive', feature_weights=[0]*6, improve_alignment=False, fit=False, write_fit=True, write_whole_pdb=False, output='QUALITY')
|
File :salign.py
结果如下:
1 2 3 4 5 6 7 8 9 10 11
| _aln.pos 10 20 30 40 50 60 3F1OA -FKGLDSKTFLSEHSMDMKFTYCDDRITELIGYHPEELLGRSAYEFYHALDSENMTKSHQNLCTKGQV 3H7WA -FKGLDSKTFLSEHSMDMKFTYCDDRITELIGYHPEELLGRSAYEFYHALDSENMTKSHQNLCTKGQV 3H82A EFKGLDSKTFLSEHSMDMKFTYCDDRITELIGYHPEELLGRSAYEFYHALDSENMTKSHQNLCTKGQV _consrvd ******************************************************************* _aln.p 70 80 90 100 110 3F1OA VSGQYRMLAKHGGYVWLETQGTVIYN-----PQCIMCVNYVLSEIEK 3H7WA VSGQYRMLAKHGGYVWLETQGTVIY------PQCIMCVNYVLSEIEK 3H82A VSGQYRMLAKHGGYVWLETQGTVIYNPRNLQPQCIMCVNYVLSEIEK _consrvd ************************* ****************
|
File :fm00495.pap
模版开搞:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| from modeller import * log.verbose() env = environ() env.libs.topology.read(file='$(LIB)/top_heav.lib') aln = alignment(env) aln.append(file='fm00495.ali', align_codes='all') aln_block = len(aln) aln.append(file='musahr.ali', align_codes='musahr') aln.salign(output='', max_gap_length=20, gap_function=True, alignment_type='PAIRWISE', align_block=aln_block, feature_weights=(1., 0., 0., 0., 0., 0.), overhang=0, gap_penalties_1d=(-450, 0), gap_penalties_2d=(0.35, 1.2, 0.9, 1.2, 0.6, 8.6, 1.2, 0., 0.), similarity_flag=True) aln.write(file='TvLDH-mult.ali', alignment_format='PIR') aln.write(file='TvLDH-mult.pap', alignment_format='PAP')
|
File: align2d_mult.py
注意序列尾巴标*
1 2 3 4 5 6 7 8 9
| from modeller import * from modeller.automodel import * env = environ() a = automodel(env, alnfile='TvLDH-mult.ali', knowns=('3F1OA','3H7WA','3H82A'), sequence='mahr') a.starting_model = 1 a.ending_model = 5 a.make()
|
File: model.py
loop优化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| from modeller import * from modeller.automodel import * log.verbose() env = environ() env.io.atom_files_directory = './:../atom_files' class MyLoop(loopmodel): def select_loop_atoms(self): return selection(self.residue_range('70', '80')) m = MyLoop(env, inimodel='musahr1.pdb', sequence='mahr') m.loop.starting_model= 10 m.loop.ending_model = 15 m.loop.md_level = refine.very_fast m.make()
|
增加配体
1 2 3 4 5 6 7 8 9 10
| from modeller import * from modeller.automodel import * env = environ() env.io.hetatm = True a = automodel(env, alnfile='TvLDH-1emd_bs.ali', knowns=('3F1OA','3H7WA','3H82A'), sequence='mahr') a.starting_model = 20 a.ending_model = 30 a.make()
|
参考文献:官方教程多模版建模
参考文献:Modeller 学习记录(四)