X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fjobfiles.py;h=c6ab414b64d00a0bc74e367779af00905e3422ae;hb=1b9e4cd5192fafe2213b582fadd19556fb2ecf3a;hp=e38d7ae19d852d90c6896b042216bcfe3b8922af;hpb=cba1e1caa3183c0a655aa671a0a4a78b60931665;p=django_unres.git diff --git a/django_simple/todo/jobfiles.py b/django_simple/todo/jobfiles.py index e38d7ae..c6ab414 100644 --- a/django_simple/todo/jobfiles.py +++ b/django_simple/todo/jobfiles.py @@ -72,7 +72,7 @@ def write_ssbond(ssbond): @receiver(post_save, sender=Task) def write_on_task_save(sender, instance, **kwargs): - if instance.ready and not instance.done and instance.running==0: + if instance.ready and not instance.done and instance.running==0 and instance.pbsjob=='': if (not os.path.isdir(instance.jobdirname)): os.mkdir(instance.jobdirname) # os.chdir(instance.jobdirname) @@ -155,6 +155,10 @@ CUTOFF=7.00000 WCORR4=0.00000""" if instance.md_pdbref: control_line = control_line+'pdbref ' +#---v + if instance.use_nmr: + control_line = control_line+' constr_dist=12 ' +#---^ if instance.unres_ff =='NEWCT-9P': control_line = control_line+'tormode=2 cart' @@ -183,13 +187,17 @@ CUTOFF=7.00000 WCORR4=0.00000""" + ' BOXZ='+str(instance.boxz) +' ' if instance.type == 'dock': - control_line = control_line+'CONSTR_HOMOL=20 ' + control_line = control_line+'CONSTR_HOMOL=24 ' if instance.md_pdbref: control_line = control_line+'pdbref ' if instance.unres_ff =='NEWCT-9P': control_line = control_line+'tormode=2 cart' +#---v + if instance.use_nmr: + control_line = control_line+' constr_dist=12 ' +#---^ cntrl_saxs='' if instance.saxs_data != '': @@ -272,7 +280,7 @@ CUTOFF=7.00000 WCORR4=0.00000""" if instance.type == 'min' or instance.md_start == 'pdbstart': if instance.type == 'dock': - f.write('model01.pdb\n') + f.write('plik1ter.pdb\n') else: f.write('plik.pdb\n') f.write(write_ssbond(instance.ssbond)) @@ -289,7 +297,7 @@ CUTOFF=7.00000 WCORR4=0.00000""" f.write('READ2SIGMA START_FROM_MODELS\n') for i in range(1,10): f.write('model0'+str(i)+'.pdb\n') - for i in range(10,21): + for i in range(10,25): f.write('model'+str(i)+'.pdb\n') if instance.type == 'md' and instance.md_start != 'pdbstart': @@ -307,6 +315,22 @@ CUTOFF=7.00000 WCORR4=0.00000""" f.write(seq_2d_write_50(seq_2d_xx(instance.md_2d,seq))) else: f.write(seq_2d_write(seq_2d_xx(instance.md_2d,seq))) +#---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 == 'remd' and instance.md_start != 'pdbstart': @@ -324,6 +348,22 @@ CUTOFF=7.00000 WCORR4=0.00000""" f.write(seq_2d_write_50(seq_2d_xx(instance.md_2d,seq))) else: f.write(seq_2d_write(seq_2d_xx(instance.md_2d,seq))) +#---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.saxs_data != '': @@ -408,7 +448,24 @@ CUTOFF=7.00000 WCORR4=0.00000""" f2.write(line.replace('$ssbond',tmp_ss)) elif 'cd $PBS_O_WORKDIR' in line and instance.type == 'dock': f2.write(line) - f2.write('../files/generator_v7 plik.pdb plik2.pdb\n') + if instance.md_seq2 !='': + f2.write("""setenv FGPROCS 2 +setenv POT GB +setenv PREFIX file2 +setenv OUT1FILE YES +/users2/local/mpich2-1.4.1p1_intel/bin/mpirun -machinefile $PBS_NODEFILE -np 2 $UNRES_BIN +/users2/local/pulchra306/pulchra -q -g file2_MD000.pdb +cat file2_MD000.rebuilt.pdb |grep -v TER |grep -v END > 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))) @@ -429,6 +486,10 @@ 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('{:79}'.format('SEED='+str(instance.md_seed)+ @@ -439,7 +500,7 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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=20')+'&\n') + 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)+ @@ -451,12 +512,29 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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,21): + for i in range(10,25): f.write('model'+str(i)+'.pdb\n') if instance.md_2d != '': @@ -497,18 +575,26 @@ 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('{:79}'.format('nres='+str(len(seq)) +' one_letter rescale=2 PRINT_CART PDBOUT=1 iopt=1' - +' temper='+str(instance.remd_cluter_temp))+'&\n') + +' 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=20')+'&\n') + 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)+ @@ -517,12 +603,30 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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,21): + 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))) @@ -533,17 +637,69 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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 +