I was trying to clean two pdb files and superpose them based on the pairwise structural alignment.
The script is like followings:
from modeller import * from modeller.scripts import complete_pdb import sys import modeller.salign
log.verbose()
env = environ() env.libs.topology.read(file='$(LIB)/top_heav.lib') env.libs.parameters.read(file='$(LIB)/par.lib')
env.io.atom_files_directory = './'
if len(sys.argv) != 5: print "Usage: superpose_pdbs.py code1 chain1 code2 chain2" sys.exit(1)
code1,chain1,code2,chain2 = sys.argv[1:] file1 = code1+'.pdb' file2 = code2+'.pdb'
aln = alignment(env) mdl1 = complete_pdb(env,file1,model_segment=('FIRST:'+chain1,'LAST:'+chain1)) mdl1.chains.name = chain1 mdl1.write(file=code1+'_'+chain1+'_complete.pdb',model_format='PDB') mdl2 = complete_pdb(env,file2,model_segment=('FIRST:'+chain2,'LAST:'+chain2)) mdl2.chains.name = chain2 mdl2.write(file=code2+'_'+chain2+'_complete.pdb',model_format='PDB')
aln.append_model(mdl1,atom_files=file1,align_codes=code1+chain1) aln.append_model(mdl2,atom_files=file2,align_codes=code2+chain2)
modeller.salign.iterative_structural_align(aln)
#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, # alignment_type='PAIRWISE', # If 'progresive', the tree is not # # computed and all structues will be # # aligned sequentially to the first # feature_weights=weights, # For a multiple sequence alignment only # # the first feature needs to be non-zero # improve_alignment=True, fit=True, write_fit=write_fit, # write_whole_pdb=whole, output='ALIGNMENT QUALITY')
aln.write(file=code1+chain1+'_'+code2+chain2+'.ali',alignment_format='PIR') atmsel = selection(mdl1).only_atom_types('CA') r = atmsel.superpose(mdl2,aln) mdl2.write(file=code2+'_'+chain2+'_complete.pdb',model_format='PDB')
When I used three iterative cycles of 'salign' above (commented) I could successfully run the script.
But when I replaced it to 'modeller.salign.iterative_structural_align(aln), I had error message like:
Traceback (most recent call last): File "clean_pdb.sh", line 33, in ? modeller.salign.iterative_structural_align(aln) File "/Library/modeller-9v7/modlib/modeller/salign.py", line 122, in iterative_structural_align aln.append(file=opfile) File "/Library/modeller-9v7/modlib/modeller/alignment.py", line 79, in append allow_alternates) IOError: openf______E> Cannot open file /var/folders/nx/nx+3eBsLGB4bYzOn5I3FjE+++TY/-Tmp-/tmp4FqRw9/salign_local_mid.ali: No such file or directory
Could you please let me know what I did wrong with this?
Thanks,
Best regards,
Seungyeul Yoo