X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fjobfiles.py;h=e7ee71653117be5f5c45c3b04e8f73c76ba09a13;hb=56595cc7938f5c7b53dd3ebe91b2a42f52cb89d1;hp=2badbc2154868ceae4bc2e54b987e69f7d3629fc;hpb=cb36b6c35942e63325f33948c429d3ca77c85306;p=django_unres.git diff --git a/django_simple/todo/jobfiles.py b/django_simple/todo/jobfiles.py index 2badbc2..e7ee716 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 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 @@ -318,31 +435,59 @@ CUTOFF=7.00000 WCORR4=0.00000""" isampl=1 else: isampl=int(instance.md_nstep/instance.md_ntwx*nreplicas/8000) - + f.write('{:79}'.format(' isampl='+str(isampl))+'&\n') if instance.md_pdbref: - f.write('{:79}'.format('SEED='+str(instance.md_seed)+' isampl='+str(isampl)+ + f.write('{:79}'.format('SEED='+str(instance.md_seed)+ ' einicheck=1 rescale=2 delta=0.02 cxfile classify')+'&\n') - f.write('BOXX='+str(instance.boxx)+' BOXY='+str(instance.boxy)+ - ' BOXZ='+str(instance.boxz)+cntrl_saxs +'\n') else: - f.write('{:79}'.format('SEED='+str(instance.md_seed)+' isampl='+str(isampl)+ + f.write('{:79}'.format('SEED='+str(instance.md_seed)+ ' einicheck=1 rescale=2 delta=0.02 cxfile')+'&\n') - f.write('BOXX='+str(instance.boxx)+' BOXY='+str(instance.boxy)+ + 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)) + 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') - fsaxs.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') @@ -358,7 +503,10 @@ 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: @@ -366,12 +514,27 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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') + if instance.md_2d != '': + f.write('{:79}'.format(' WITH_DIHED_CONSTR')+'&\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)) + 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: @@ -382,14 +545,28 @@ CUTOFF=7.00000 WCORR4=0.00000""" 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