Hi there,
I am modeling a homopentamer using three structures of homologous homopentamers as the template.The monomers are 210 aa's. Following the advanced tutorial, I first aligned the three known structures using salign with the three cycles of refinement, and got good alignment. In the tutorial, the next step was to then align the test sequence with the aligned templates using align_2d. After approximately 3900 seconds this produced what looks like a nice alignment, with structural features such as cys involved in disulfides and conserved aromatic residues lining up between all four sequences (three templates, one test). I then did the alignment using salign instead of align_2d, following the description in the online manual for salign (examples/salign.saling_align_2d). Once again, a nice (but slightly different in the regions without much homology, but still with the other features retained) is obtained. The surprising thing is that this alignment only took 17 seconds, a 200-fold improvement in time). Both alignments gave acceptable-looking models.
Are the two algorithms so different that salign is that much faster? Is there any advantage to using align_2d instead of salign?
Thanks
Mike White
Here are the two scripts:
************************************************************************** ALIGN-2D:
# Demonstrating ALIGN2D, aligning with variable gap penalty # uses a version of the 5HT3ARXD with first 12 residues removed (no overlap with templates) # default gap_penalties_2d: (3.5, 3.5, 3.5, 0.2, 4.0, 6.5, 2.0, 0., 0.) # default gap_penalties_1d: (-450, -50)
from modeller import *
log.verbose() env = environ()
env.libs.topology.read(file='$(LIB)/top_heav.lib')
# Read aligned structure(s): aln = alignment(env) aln.append(file='achbpsPentamer.ali', align_codes='all') aln_block = len(aln)
# Read aligned sequence(s): aln.append(file='5HT3ARXDPentamerTrim.ali', align_codes='5HT3ARXDPentamerTrim')
# Structure sensitive variable gap penalty sequence-sequence alignment: aln.align2d(overhang=0, gap_penalties_1d=(-450, -50), gap_penalties_2d=(3.5, 3.5, 3.5, 0.2, 4.0, 6.5, 2.0, 0., 0.), align_block=aln_block)
# write files. In *.pap files indicate helices and beta structures aln.write(file='5HT3ARXDPentamerTrim-mult.ali', alignment_format='PIR') aln.write(file='5HT3ARXDPentamerTrim-mult.pap', alignment_format='PAP', alignment_features=' INDICES HELIX BETA') **************************************************************************** SALIGN:
# Demonstrating ALIGN2D using salign commands, aligning with variable gap penalty # uses a version of the 5HT3ARXD with first 12 residues removed (no overlap with templates) # default gap_penalties_2d: (3.5, 3.5, 3.5, 0.2, 4.0, 6.5, 2.0, 0., 0.) # default gap_penalties_1d: (-450, -50)
from modeller import *
log.verbose() env = environ()
env.libs.topology.read(file='$(LIB)/top_heav.lib')
# Read aligned structure(s): aln = alignment(env) aln.append(file='achbpsPentamer.ali', align_codes='all') aln_block = len(aln)
# Read aligned sequence(s): aln.append(file='5HT3ARXDPentamerTrim.ali', align_codes='5HT3ARXDPentamerTrim')
# Structure sensitive variable gap penalty sequence-sequence alignment: aln.salign(rr_file='$(LIB)/as1.sim.mat', output='', max_gap_length=20, gap_function=True, feature_weights=(1.,0., 0., 0., 0., 0.), gap_penalties_1d=(-450,-50), gap_penalties_2d=(3.5, 3.5, 3.5, 0.2, 4.0, 6.5, 2.0, 0., 0.), similarity_flag=True, align_block=aln_block)
# write files. In *.pap files indicate helices and beta structures aln.write(file='5HT3ARXDPentamerTrim-multSalign.ali', alignment_format='PIR') aln.write(file='5HT3ARXDPentamerTrim-multSalign.pap', alignment_format='PAP', alignment_features=' INDICES HELIX BETA') *****************************************************************************