# Demonstrating ALIGN2D, aligning with variable gap penalty from modeller import * log.verbose() env = Environ() env.libs.topology.read('$(LIB)/top_heav.lib') env.io.atom_files_directory = ['../atom_files'] # Read aligned structure(s): aln = Alignment(env) aln.append(file='toxin.ali', align_codes='2ctx') aln_block = len(aln) # Read aligned sequence(s): aln.append(file='toxin.ali', align_codes='2nbt') # Structure sensitive variable gap penalty sequence-sequence alignment: aln.align2d(overhang=0, gap_penalties_1d=(-100, 0), gap_penalties_2d=(3.5, 3.5, 3.5, 0.2, 4.0, 6.5, 2.0, 0., 0.), align_block=aln_block) aln.write(file='align2d.ali', alignment_format='PIR') aln.write(file='align2d.pap', alignment_format='PAP', alignment_features='INDICES HELIX BETA STRAIGHTNESS ' + \ 'ACCESSIBILITY CONSERVATION') aln.check() # Color the first template structure according to gaps in alignment: aln = Alignment(env) aln.append(file='align2d.ali', align_codes=('2ctx', '2nbt'), alignment_format='PIR', remove_gaps=True) mdl = Model(env) mdl.read(file=aln['2ctx'].atom_file, model_segment=aln['2ctx'].range) mdl.color(aln=aln) mdl.write(file='2ctx.aln.pdb') # Color the first template structure according to secondary structure: mdl.write_data(file='2ctx', output='SSM') mdl.write(file='2ctx.ssm.pdb') # Superpose the target structure onto the first template: mdl2 = Model(env) mdl2.read(file=aln['2nbt'].atom_file, model_segment=aln['2nbt'].range) sel = Selection(mdl).only_atom_types('CA') sel.superpose(mdl2, aln) mdl2.write(file='2nbt.fit.pdb')