X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fjobfiles.py;h=c6ab414b64d00a0bc74e367779af00905e3422ae;hb=1b9e4cd5192fafe2213b582fadd19556fb2ecf3a;hp=a569298178995ed94b96e93d0f4127a1f93665a5;hpb=e7ce5a8738d19336986d61d52a8080fe7cb3eefb;p=django_unres.git diff --git a/django_simple/todo/jobfiles.py b/django_simple/todo/jobfiles.py index a569298..c6ab414 100644 --- a/django_simple/todo/jobfiles.py +++ b/django_simple/todo/jobfiles.py @@ -13,6 +13,47 @@ import textwrap logging.basicConfig() logger = logging.getLogger(__name__) +def seq_2d_xx(line,seq): + line=line.replace(" ","") + lista=list(line) + for ii in range(0,len(line)): + if seq[ii]=='X': + if ii>0: + lista[ii-1]='-' + if ii+1 tmp_plik2.pdb +/users2/local/mmtsb/perl/convpdb.pl -renumber 1 -out generic tmp_plik2.pdb > act.rebuilt.pdb +/users2/local/scwrl4/Scwrl4 -h -i act.rebuilt.pdb -o plik2.pdb +rm tmp_plik2.pdb act.rebuilt.pdb\n""") + if instance.dock_peptide: + f2.write('../files/generator_v13 plik.pdb plik2.pdb 1 \n') + else: + f2.write('../files/generator_v13 plik.pdb plik2.pdb 0 \n') + f2.write("sed '/END/q' plik.pdb |grep ATOM > plik1ter.pdb \n") + f2.write("echo TER >> plik1ter.pdb \n") + f2.write("sed '/END/q' plik2.pdb |grep ATOM >> plik1ter.pdb \n") else: tmp1=json.loads(instance.remd_multi_t) f2.write(line.replace('$temperatures','"'+" ".join(tmp1)+'" '+str(nreplicas))) f1.close() f2.close() + + f1 = open('file.seq', 'w') + for i in range(0,len(seq),80): + f1.write(seq[i:i+80]+'\n') + f1.write('\n') + f1.close() + os.chdir('..') # write wham & cluster input @@ -293,21 +486,83 @@ CUTOFF=7.00000 WCORR4=0.00000 isampl=1 else: isampl=int(instance.md_nstep/instance.md_ntwx*nreplicas/8000) - +#---v + if instance.use_nmr: + f.write('{:79}'.format('with_dist_constr constr_dist=12')+'&\n') +#---^ + f.write('{:79}'.format(' isampl='+str(isampl))+'&\n') if instance.md_pdbref: - f.write('SEED='+str(instance.md_seed)+' isampl='+str(isampl)+ - ' einicheck=1 rescale=2 delta=0.02 cxfile classify\n') + f.write('{:79}'.format('SEED='+str(instance.md_seed)+ + ' einicheck=1 rescale=2 delta=0.02 cxfile classify')+'&\n') else: - f.write('SEED='+str(instance.md_seed)+' isampl='+str(isampl)+ - ' einicheck=1 rescale=2 delta=0.02 cxfile\n') + f.write('{:79}'.format('SEED='+str(instance.md_seed)+ + ' einicheck=1 rescale=2 delta=0.02 cxfile')+'&\n') + if instance.md_2d != '': + f.write('{:79}'.format(' WITH_DIHED_CONSTR')+'&\n') + if instance.type == 'dock': + f.write('{:79}'.format(' n_ene=19 CONSTR_HOMOL=24')+'&\n') + if instance.unres_ff =='NEWCT-9P': + f.write('{:79}'.format('tormode=2 ')+'&\n') + f.write('BOXX='+str(instance.boxx)+' BOXY='+str(instance.boxy)+ + ' BOXZ='+str(instance.boxz)+cntrl_saxs +'\n') + f.write('nres='+str(len(seq))+' one_letter\n') for i in range(0,len(seq),80): f.write(seq[i:i+80]+'\n') f.write(write_ssbond(instance.ssbond)) - - f.write(w) +#---v + if instance.use_nmr: + f.write('ndist='+repr(instance.linijek_nmr)+' restr_type=12 scal_peak=') + f.write(repr(instance.nmr_scal)+' fordepth_peak='+repr(instance.nmr_fordepth)) + f.write(' slope_peak='+repr(instance.nmr_slope)+'\n') + if (instance.myfile3=='files/N1008_AmbiR-trunc.txt'): + fnmr = open(instance.jobdirname+'/../files/N1008_AmbiR-trunc.txt', 'r') + for linmr in fnmr: + f.write(linmr) + fnmr.close() + else: + fnmr = open(instance.jobdirname+'/plik3.nmr', 'r') + for linmr in fnmr: + f.write(linmr) + fnmr.close() +#---^ + + if instance.type == 'dock': + f.write('HOMOL_DIST=0.1 HOMOL_ANGLE=1.0 HOMOL_THETA=1.0 HOMOL_SCD=1.0 DIST_CUT=15.0 &\n') + f.write('READ2SIGMA \n') + for i in range(1,10): + f.write('model0'+str(i)+'.pdb\n') + for i in range(10,25): + f.write('model'+str(i)+'.pdb\n') + + if instance.md_2d != '': + f.write(seq_2d_write_50(seq_2d_xx(instance.md_2d,seq))) + + if instance.saxs_data != '': + saxs_r=[] + saxs_P=[] + saxs_norm=0 + r_last=None + fsaxs = open(instance.jobdirname+'/saxs.data', 'w') + lines=instance.saxs_data.split('\n') + for line in lines: + tmp=line.split() + if len(tmp)==2: + f.write(tmp[0]+' '+tmp[1]+'\n') + saxs_r.append(tmp[0]) + saxs_P.append(float(tmp[1])) + if r_last==None: + r_last=float(tmp[0]) + else: + saxs_norm += float(tmp[1])*(float(tmp[0])-r_last) + r_last=float(tmp[0]) + for r,p in zip(saxs_r,saxs_P): + fsaxs.write('{} {}\n'.format(r,p/saxs_norm)) + fsaxs.close() + + f.write(w+'\n') f.write('\n') f.write('nt='+str(instance.remd_nrep)+' replica read_iset\n') tmp1=json.loads(instance.remd_multi_t) @@ -320,30 +575,131 @@ CUTOFF=7.00000 WCORR4=0.00000 f.write('file_MD000\n') if instance.md_pdbref: f.write('pdbref\n') - f.write('plik.pdb\n') + if instance.type == 'dock': + f.write('plik1ter.pdb\n') + else: + f.write('plik.pdb\n') with open(instance.jobdirname+'/file_cluster.inp','w') as f: f.write(instance.name + ' UNRES server job'+ '\n') - f.write('nres='+str(len(seq)) + f.write('{:79}'.format('nres='+str(len(seq)) +' one_letter rescale=2 PRINT_CART PDBOUT=1 iopt=1' - +' temper='+str(instance.remd_cluter_temp)+'\n') - f.write(w) + +' temper='+str(instance.remd_cluter_temp) + +' nclust='+str(instance.remd_cluster_n))+'&\n') + if instance.md_2d != '': + f.write('{:79}'.format(' WITH_DIHED_CONSTR')+'&\n') +#---v + if instance.use_nmr: + f.write('{:79}'.format('constr_dist=12 ')+'&\n') +#---^ + if instance.type == 'dock': + f.write('{:79}'.format(' CONSTR_HOMOL=24')+'&\n') + if instance.unres_ff =='NEWCT-9P': + f.write('{:79}'.format('tormode=2 ')+'&\n') + f.write('BOXX='+str(instance.boxx)+' BOXY='+str(instance.boxy)+ + ' BOXZ='+str(instance.boxz)+cntrl_saxs +'\n') + f.write(w+'\n') for i in range(0,len(seq),80): f.write(seq[i:i+80]+'\n') f.write(write_ssbond(instance.ssbond)) + +#---v + if instance.use_nmr: + f.write('ndist='+repr(instance.linijek_nmr)+' restr_type=12 scal_peak=') + f.write(repr(instance.nmr_scal)+' fordepth_peak='+repr(instance.nmr_fordepth)) + f.write(' slope_peak='+repr(instance.nmr_slope)+'\n') + if (instance.myfile3=='files/N1008_AmbiR-trunc.txt'): + fnmr = open(instance.jobdirname+'/../files/N1008_AmbiR-trunc.txt', 'r') + for linmr in fnmr: + f.write(linmr) + fnmr.close() + else: + fnmr = open(instance.jobdirname+'/plik3.nmr', 'r') + for linmr in fnmr: + f.write(linmr) + fnmr.close() +#---^ + + if instance.type == 'dock': + f.write('HOMOL_DIST=0.1 HOMOL_ANGLE=1.0 HOMOL_THETA=1.0 HOMOL_SCD=1.0 DIST_CUT=15.0 &\n') + f.write('READ2SIGMA \n') + for i in range(1,10): + f.write('model0'+str(i)+'.pdb\n') + for i in range(10,25): + f.write('model'+str(i)+'.pdb\n') + if instance.md_2d != '': + f.write(seq_2d_write_50(seq_2d_xx(instance.md_2d,seq))) + if instance.saxs_data != '': + lines=instance.saxs_data.split('\n') + for line in lines: + tmp=line.split() + if len(tmp)==2: + f.write(tmp[0]+' '+tmp[1]+'\n') + + if instance.type == 'dock' and instance.md_seq2 != '': + with open(instance.jobdirname+'/file2.inp','w') as f: + f.write(instance.name + ' chain2 random start'+ '\n') + control_line = 'SEED='+str(instance.md_seed)+' '\ + +'rand_conf md one_letter'\ + + ' BOXX=1000 BOXY=1000 BOXZ=1000 ' + + if instance.unres_ff =='NEWCT-9P': + control_line = control_line+'tormode=2 cart' + + type_line = ' reset_vel=0'\ + +' t_bath=300'\ + +' nstep=100000'\ + +' ntwe=10000'\ + +' ntwx=100000'\ + +' dt=0.2 lang=1 scal_fric=0.02 respa mdpdb ' + + wrapper = textwrap.TextWrapper(width=70) + word_list = wrapper.wrap(text=control_line) + for element in word_list[:-1]: + f.write('{:79}'.format(element)+'&\n') + f.write(word_list[-1]+'\n') + + word_list = wrapper.wrap(text=type_line) + for element in word_list[:-1]: + f.write('{:79}'.format(element)+'&\n') + f.write(word_list[-1]+'\n') + + f.write(w+'\n') + + seq=instance.md_seq2.replace(" ","") + f.write(str(len(seq))+'\n') + for i in range(0,len(seq),80): + f.write(seq[i:i+80]+'\n') + f.write('0\n') + f.write('0\n') + os.chdir(instance.jobdirname) ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs8.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.chdir('..') + + output = str(ret_code.communicate()[0]) + output=output.strip() + if output=='': + output='error' + logger.warning("PBS \"%s\" " % output) + instance.pbsjob = output + instance.save() - print ret_code.stdout.readlines() +# print ret_code.stdout.readlines() logger.warning("Dir \"%s\" has been saved." % instance.jobdirname) @receiver(post_delete, sender=Task) def delete_on_task_del(sender, instance, **kwargs): if instance.jobdirname: if os.path.isdir(instance.jobdirname): + if not instance.done: + ret_code_qdel = subprocess.Popen(' /opt/torque/bin/qdel '+str(instance.pbsjob), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + output = str(ret_code_qdel.communicate()[0]) + output=output.strip() + logger.warning("PBS qdel \"%s\" " % instance.pbsjob) + logger.warning("QDEL \"%s\" " % output) shutil.rmtree(instance.jobdirname) logger.warning("Dir \"%s\" has been rm." % instance.jobdirname) - \ No newline at end of file +