update features for ORCA6

main
Aditya Wibawa Sakti 1 month ago
parent 2dd312b99b
commit da8871cde3
  1. 2
      README.md
  2. 57
      bin/cmmde.py
  3. 2
      bin/cmmdepost.py
  4. BIN
      lib/__pycache__/cmmde_dcdftb.cpython-310.pyc
  5. BIN
      lib/__pycache__/cmmde_dcdftb.cpython-311.pyc
  6. BIN
      lib/__pycache__/cmmde_dftb.cpython-311.pyc
  7. BIN
      lib/__pycache__/cmmde_dock.cpython-311.pyc
  8. BIN
      lib/__pycache__/cmmde_hubbard.cpython-311.pyc
  9. BIN
      lib/__pycache__/cmmde_mass.cpython-311.pyc
  10. BIN
      lib/__pycache__/cmmde_mdpro.cpython-311.pyc
  11. BIN
      lib/__pycache__/cmmde_nw.cpython-311.pyc
  12. BIN
      lib/__pycache__/cmmde_orca.cpython-310.pyc
  13. BIN
      lib/__pycache__/cmmde_orca.cpython-311.pyc
  14. BIN
      lib/__pycache__/cmmde_qe.cpython-311.pyc
  15. BIN
      lib/__pycache__/cmmde_xtb.cpython-311.pyc
  16. 98
      lib/cmmde_orca.py

@ -18,7 +18,7 @@ CMMDE is a set of tools based on Python for running computational jobs, as well
- Core developers: Aditya Wibawa Sakti, Atthar Luqman Ivansyah, Hasan Al Rasyid, Muhamad Abdulkadir Martoprawiro, Aulia Sukma Hutama
- Contributors: Athiya Mahmud Hanna, Arifin, Daniel Sethio
- Core reviewers: Rahmat Gunawan, Imam Siswanto, Parsaoran Siahaan, Nova Pratiwi Indriyani
- Committed users: Yusthinus Thobias Male, Veliyana Londong, Mirella Fonda, Riyanto, Badra, Hilda, Rustaman, Edu
- Committed users: Yusthinus Thobias Male, Veliyana Londong, Mirella Fonda, Riyanto, Badra Sanditya Rattyananda, Suci Zulaikha Hildayani, Rustaman, Eduardus
CMMDE telah diluncurkan dan akan diikuti oleh serangkaian lokakarya:

@ -1,4 +1,4 @@
#!/usr/bin/env python3
#!/usr/bin/env python
import sys
import os
import argparse
@ -113,6 +113,59 @@ parser.add_argument('-calcrmsd','--calcrmsd',type=str,default='no',help='Apakah
parser.add_argument('-nlig','--nligands',type=int,help='Jumlah ligan yang akan didocking.')
# Model Pelarut Implisit
parser.add_argument('-solvent','--solvent',type=str,default='none',help='Pelarut yang digunakan dalam perhitungan.')
parser.add_argument('-solvtype','--solvtype',type=str,default='CPCM', help='Model pelarut implisit yang digunakan. Pilihan: CPCM, CPCMC, GBSA,dan GBSA.')
parser.add_argument('-cpcmsurf','--cpcmsurface',type=str,default='VDW',help='Pilihan model skema muatan titik dalam pemodelan pelarut implisit. Pilihan: VDW dan SES.')
parser.add_argument('-draco','--draco',type=bool,default=False,help='Apakah ingin menggunakan model DRACO? Default: False.')
parser.add_argument('-draco_c','--draco_charges',type=str,default='eeq',help='Pilihan tipe muatan dalam model DRACO. Default: eeq, pilihan lain: ceh.')
# Input for the solvator module in Orca6
parser.add_argument('-solvator','--solvator',type=bool,default=False, help='Apakah ingin menggunakan pelarut explisit? Default: False.')
parser.add_argument('-nsolv','--nsolv',type=int,default=5, help='Jumlah pelarut yang digunakan dalam model pelarut eksplisit. Default: 5.')
parser.add_argument('-solventfile','--solventfile',type=str,help='File pelarut yang digunakan jika digunakan pelarut yang tidak ada dalam model ALPB.')
parser.add_argument('-solvprint','--solvprint',type=str,default='NORMAL',help='Seberapa detail output perhitungan solvator. Default: NORMAL, pilihan: LOW, HIGH.')
parser.add_argument('-randomsolv','--randomsolv',type=str, default='True', help='Apakah pelarut diletakkan secara sangat acak? Default: False.')
parser.add_argument('-fixsolute','--fixsolute',type=str, default='True',help='Apakah posisi terlarut tidak berubah selama proses solvasi. Default: True.')
parser.add_argument('-use_eeq','--use_eeq',type=str, default='True', help='Apakah akan digunakan model muatan EEQ dalam model Stochastic? Default: True.')
parser.add_argument('-droplet','--droplet',type=str,default='False',help='Apakah ingin dibuat model droplet? Default: False.')
parser.add_argument('-r_droplet','--droplet_radius',type=float,default=10.0, help='Radius droplet dalam Angstrom. Default: 10.0.')
# DOCKER module in Orca 6
parser.add_argument('-guest','--guest',type=str, default='none',help='File untuk docking menggunakan Orca.')
parser.add_argument('-docklevel','--docklevel',type=str,default='NORMAL', help='Tingkat akurasi docking. Default: NORMAL. Pilihan: SCREENING, COMPLETE.')
parser.add_argument('-nrepeatguest','--nrepeatguest',type=int,default=1, help='Jumlah ligan yang akan dilibatkan dalam docking. Default: 1.')
parser.add_argument('-cumulativeguest','--cumulativeguest',type=str,default='False',help='Update file ligan yang akan didocking. Default: False.')
parser.add_argument('-fixhost','--fixhost',type=str,default='False', help='Struktur host tidak dioptimasi? Default: False.')
parser.add_argument('-evpes','--evpes',type=str,default='GFNFF',help='Pilihan metode dalam proses docking. Default: GFNFF. Pilihan: GFNFF, GFN0XTB, GFN1XTB, GFN2XTB.')
parser.add_argument('-nopt','--nopt',type=int,default=10,help='Jumlah struktur yang akan dioptimasi setelah proses docking. Default: 10.')
parser.add_argument('-no_opt','--no_opt',type=str,default='False',help='Tidak melakukan optimasi setelah proses docking. Default:False.')
# GOAT module related in Orca 6
parser.add_argument('-goat_iter','--goat_iter',type=int, default=128, help='Maksimum iterasi GOAT. Default: 128.')
parser.add_argument('-goat_opt_iter','--goat_opt_iter',type=int,default=256,help='Jumlah maksimum optimasi geometri per iterasi GOAT. Default: 256.')
parser.add_argument('-skip_initopt','--skip_initopt',type=str,default='False', help='Skip optimasi geometri sebelum melakukan GOAT. Default: False.')
parser.add_argument('-randomseed','--randomseed',type=str,default='True',help='Melakukan sampling random number dalam GOAT? Default: True.')
parser.add_argument('-readensemble','--readensemble',type=str,default='none',help='File (jika ada) ensemble konformer dengan format seperti halnya output GOAT.')
parser.add_argument('-autowall','--autowall',type=str,default='False',help='Menambahkan dinding potensial (sekitar 5 angstrom dari pusat massa molekul) secara otomatis di sekitar molekul. Default: False.')
parser.add_argument('-mintemplist','--mintemplist',type=str,default='none',help='Isikan 4 bilangan dipisahkan dengan koma untuk mendefinisikan suhu untuk menginisiasi basic workers. Jika tidak tahu tidak perlu diisi.')
parser.add_argument('-nworkers','--nworkers',type=str,default='AUTO',help='Jumlah worker yang digunakan. Default: AUTO. Pilihan: Bilangan kelipatan 4 (jumlah temperature untuk menginisiasi worker).')
parser.add_argument('-maxitermult','--maxitermult',type=str,default='none',help='Jumlah pengali optimasi geometri per worker. Isikan suatu bilangan jika dibutuhkan.')
parser.add_argument('-keepworker','--keepworker',type=str,default='False',help='Menyimpan file optimasi worker. Default: False.')
parser.add_argument('-worker_randstart','--worker_randstart',type=str,default='True', help='Memulai worker secara acak. Default: True.')
parser.add_argument('-up_atoms','--uphill_atoms',type=str,default='none',help='Hanya melakukan GOAT untuk atom tertentu saja. Misal, jika hanya atom 1-3, 5, dan 14, maka tuliskan dalam kurung kurawal angka 0:2, 4, 13.')
parser.add_argument('-gfn_up','--gfn_uphill',type=str,default='GFNFF',help='Metode XTB yang digunakan untuk memvariasikan konformer. Default: GFNFF. Pilihan: GFN0XTB, GFN1XTB, GFN2XTB.')
parser.add_argument('-align','--align',type=str,default='False',help='Membandingkan energi konformer dengan energi konformer terrendah. Default: False.')
parser.add_argument('-en_diff','--en_diff',type=float,default=0.5,help='Perbedaan energi antar konformer dalam kcal/mol. Default: 0.5.')
parser.add_argument('-max_en','--max_en',type=float,default=6.0,help='Energi maksimum konformer (kcal/mol) yang akan dicari. Default: 6.0.')
parser.add_argument('-max_S','--max_entropy',type=str,default='False',help='Apakah ingin menjadikan nilai energi bebas untuk kriteria konvergensi GOAT? Default: False.')
parser.add_argument('-conf_temp','--conf_temp',type=float,default=298.15,help='Suhu (Kelvin) yang digunakan dalam perhitungan energi bebas. Default: 298.15.')
parser.add_argument('-min_delta_S','--min_delta_S',type=float,default=0.1, help='Perbedaan entropi (cal/mol/K) minimal untuk mendefinisikan kondisi konvergensi GOAT. Default: 0.1.')
parser.add_argument('-conf_degen','--conf_degen',type=str,default='AUTO',help='Jumlah kondisi degenerasi konformer. Default: AUTO. Pilihan: Bilangan bulat, misalkan 2 atau berapapun. Bisa juga diisi sebagai: AUTO, AUTOMAX.')
parser.add_argument('-free_heteroatoms','--free_heteroatoms',type=str,default='False',help='Merelaksasi semua atom selain H dan C. Default: False.')
parser.add_argument('-free_nonh_atoms','--free_nonh_atoms',type=str,default='False',help='Merelaksasi semua atom non hidrogen. Default: False.')
parser.add_argument('-free_fragments','--free_fragments',type=str,default='False',help='Merelaksasi antar fragmen molekul. Default: False.')
parser.add_argument('-freeze_bonds','--freeze_bonds',type=str,default='True',help='Membekukan ikatan selama proses GOAT. Default: True.')
parser.add_argument('-freeze_angles','--freeze_angles',type=str,default='False',help='Membekukan sudut ikatan selama proses GOAT. Default: False.')
parser.add_argument('-freeze_cistrans','--freeze_cistrans',type=str,default='False',help='Membekukan isomer cis-trans selama proses GOAT. Default: False.')
parser.add_argument('-freeze_amides','--freeze_amides',type=str,default='False',help='Membekukan gugus amida selama proses GOAT. Default: False.')
parser.add_argument('-maxcoordnum','--maxcoordnum',type=str,default='none',help='Jumlah maksimal bilangan koordinasi dalam format LabelAtom1,BilanganKoordinasi1,LabelAtom2,BilanganKoordinasi2,dst. Default: none.')
parser.add_argument('-max_topo_diff','--max_topo_diff',type=str,default='none',help='Jumlah maksimum perbedaan topologi jika diinginkan. Default: none.')
# Input untuk simulasi MD sistem protein
parser.add_argument('-protein','--protein',type=str,help='Struktur protein dalam format pdb')
# Input untuk perkiraan jalur reaksi menggunakan xTB
@ -235,7 +288,7 @@ elif ('.mol2' not in opt.input and '.xyz' not in opt.input and '.pdb' not in opt
geom = 'geom.xyz'
### ORCA
if opt.software == 'orca':
orca(opt.job,opt.method,opt.nproc,geom,opt.charge,opt.mult,opt.scalefreq,opt.temp,opt.pressure,opt.nroots,opt.tda,opt.solvent,opt.constraints,opt.qmatoms,opt.totalcharge,opt.totalmult,opt.qm2method,opt.qm2basis,opt.activeatoms,opt.hessfile,opt.dispersion,opt.aim,opt.produk,opt.transitionstate,opt.irciter,opt.printlevel, opt.inithess,opt.grid, opt.finalgrid,opt.iter)
orca(opt.job,opt.method,opt.nproc,geom,opt.charge,opt.mult,opt.scalefreq,opt.temp,opt.pressure,opt.nroots,opt.tda,opt.solvent,opt.constraints,opt.qmatoms,opt.totalcharge,opt.totalmult,opt.qm2method,opt.qm2basis,opt.activeatoms,opt.hessfile,opt.dispersion,opt.aim,opt.produk,opt.transitionstate,opt.irciter,opt.printlevel, opt.inithess,opt.grid, opt.finalgrid,opt.iter,opt.solvtype,opt.cpcmsurface,opt.draco,opt.draco_charges,opt.solvator,opt.nsolv,opt.solventfile,opt.solvprint,opt.randomsolv,opt.fixsolute,opt.use_eeq,opt.droplet,opt.droplet_radius,opt.guest,opt.docklevel,opt.nrepeatguest,opt.cumulativeguest,opt.fixhost,opt.evpes,opt.nopt,opt.no_opt,opt.goat_iter,opt.goat_opt_iter,opt.skip_initopt,opt.randomseed,opt.readensemble,opt.autowall,opt.mintemplist,opt.nworkers,opt.maxitermult,opt.keepworker,opt.worker_randstart,opt.uphill_atoms,opt.gfn_uphill,opt.align,opt.en_diff,opt.max_en,opt.max_entropy,opt.conf_temp,opt.min_delta_S,opt.conf_degen,opt.free_heteroatoms,opt.free_nonh_atoms,opt.free_fragments,opt.freeze_bonds,opt.freeze_angles,opt.freeze_cistrans,opt.freeze_amides,opt.maxcoordnum,opt.max_topo_diff)
### NWChem
if opt.software == 'nwchem':

@ -1,4 +1,4 @@
#!/usr/bin/env python3
#!/usr/bin/env python
import os
import sys
import argparse

@ -1,4 +1,4 @@
def orca(job,method,nproc,geom,charge,mult,scalfreq,temperature,pressure,nroots,tda,solvent,constraints,qmatoms,totalcharge,totalmult,qm2method,qm2basis,activeatoms,hessfile,disp,aim,product,ts,irciter, printlevel, inithess,grid, finalgrid,maxiter):
def orca(job,method,nproc,geom,charge,mult,scalfreq,temperature,pressure,nroots,tda,solvent,constraints,qmatoms,totalcharge,totalmult,qm2method,qm2basis,activeatoms,hessfile,disp,aim,product,ts,irciter, printlevel, inithess,grid, finalgrid,maxiter,solvtype,cpcmsurface,draco,draco_charges,solvator,nsolv,solventfile,solvprint,randomsolv,fixsolute,use_eeq,droplet,droplet_radius,guest,docklevel,nrepeatguest,cumulativeguest,fixhost,evpes,nopt,no_opt,goat_iter,goat_opt_iter,skip_initopt,randomseed,readensemble,autowall,mintemplist,nworkers,maxitermult,keepworker,worker_randstart,uphill_atoms,gfn_uphill,align,en_diff,max_en,max_entropy,conf_temp,min_delta_S,conf_degen,free_heteroatoms,free_nonh_atoms,free_fragments,freeze_bonds,freeze_angles,freeze_cistrans,freeze_amides,maxcoordnum,max_topo_diff):
if 'opt' in job or 'Opt' in job or 'OPT' in job and not 'ts' in job:
method += ' opt'
if 'freq' in job and ('XTB2' in method or 'XTB' in method):
@ -21,9 +21,25 @@ def orca(job,method,nproc,geom,charge,mult,scalfreq,temperature,pressure,nroots,
method += ' AIM'
if solvent != 'none' and ('XTB2' in method or 'XTB' in method or 'XTBFF' in method):
method += ' ALPB({})'.format(solvent)
if solvtype == 'GBSA':
method += ' GBSA({})'.format(solvent)
if solvent != 'none' and ('XTB2' not in method and 'XTB' not in method and 'XTBFF' not in method):
method += ' CPCM({})'.format(solvent)
if draco == True:
method += ' DRACO'
if solvtype == 'CPCM' or solvtype == 'cpcm':
method += ' CPCM({})'.format(solvent)
elif solvtype == 'CPCMC' or solvtype == 'COSMO' or solvtype == 'cosmo':
method += ' CPCMC({})'.format(solvent)
elif solvtype == 'SMD' or solvtype == 'smd':
method += ' SMD({})'.format(solvent)
if job == 'goat' or job == 'GOAT':
method += ' GOAT'
if job == 'goat-react' or job == 'GOAT-REACT':
method += ' GOAT-REACT'
if job == 'goat-explore' or job == 'GOAT-EXPLORE':
method += ' GOAT-EXPLORE'
with open('cmmd.in','w') as f:
print("#CMMDE generated Orca input file", file=f)
print("!{}".format(method), file=f)
@ -98,5 +114,83 @@ end
FinalGrid {}
end
""".format(irciter, printlevel, inithess, hessfile, grid, finalgrid),file=f)
if solvent != 'none' and 'XTB' not in method:
print('%CPCM',file=f)
if cpcmsurface == 'SES' or cpcmsurface == 'ses':
print('SURFACETYPE GEPOL_SES_GAUSSIAN',file=f)
else:
print('SURFACETYPE VDW_GAUSSIAN',file=f)
if draco == True:
if draco_charges == 'ceh' or draco_charges == 'CEH':
print('draco_charges ceh',file=f)
else:
print('draco_charges eeq',file=f)
print('END',file=f)
if solvator == True:
print('%SOLVATOR',file=f)
print(' NSOLV {}'.format(nsolv),file=f)
print(' CLUSTERMODE STOCHASTIC',file=f)
print(""" SOLVENTFILE "{}" """.format(solventfile),file=f)
print(' PRINTLEVEL {}'.format(solvprint),file=f)
print(' RANDOMSOLV {}'.format(randomsolv),file=f)
print(' FIXSOLUTE {}'.format(fixsolute),file=f)
print(' USEEEQCHARGES {}'.format(use_eeq),file=f)
print(' DROPLET {}'.format(droplet),file=f)
if droplet == 'True' or droplet == 'true' or droplet == 'TRUE':
print(' RADIUS {}'.format(droplet_radius),file=f)
print('END',file=f)
if 'docker' in job:
print('%DOCKER',file=f)
print(""" GUEST "{}" """.format(guest),file=f)
print(' DOCKLEVEL {}'.format(docklevel),file=f)
print(' NREPEATGUEST {}'.format(nrepeatguest),file=f)
print(' CUMULATIVE {}'.format(cumulativeguest),file=f)
print(' FIXHOST {}'.format(fixhost),file=f)
print(' EVPES {}'.format(evpes),file=f)
print(' NOPT {}'.format(nopt),file=f)
print(' NOOPT {}'.format(no_opt),file=f)
print('END',file=f)
if 'GOAT' in job or 'goat' in job:
print('%GOAT',file=f)
print(' MAXITER {}'.format(goat_iter),file=f)
print(' MAXOPTITER {}'.format(goat_opt_iter),file=f)
print(' SKIPINITIALOPT {}'.format(skip_initopt),file=f)
print(' RANDOMSEED {}'.format(randomseed),file=f)
if readensemble != 'none':
print(' READENSEMBLE {}'.format(readensemble),file=f)
print(' AUTOWALL {}'.format(autowall),file=f)
if mintemplist != 'none':
print(' MINTEMPLIST {}'.format(mintemplist),file=f)
print(' NWORKERS {}'.format(nworkers),file=f)
if maxitermult != 'none':
print(' MAXITERMULT {}'.format(maxitermult),file=f)
print(' KEEPWORKERDATA {}'.format(keepworker),file=f)
print(' WORKERRANDOMSTART {}'.format(worker_randstart),file=f)
if uphill_atoms != 'none':
print(' UPHILLATOMS {} END'.format(uphill_atoms),file=f)
print(' GFNUPHILL {}'.format(gfn_uphill),file=f)
print(' ALIGN {}'.format(align),file=f)
print(' ENDIFF {}'.format(en_diff),file=f)
print(' MAXEN {}'.format(max_en),file=f)
# if 'EXPLORE' in job or 'Explore' in job or 'explore' in job:
# print(' RMSDMETRIC EIGENVALUE',file=f)
#else:
# print(' RMSDMETRIC RMSD',file=f)
print(' MAXENTROPY {}'.format(max_entropy),file=f)
print(' CONFTEMP {}'.format(conf_temp),file=f)
print(' MINDELS {}'.format(min_delta_S),file=f)
print(' CONFDEGEN {}'.format(conf_degen),file=f)
print(' FREEHETEROATOMS {}'.format(free_heteroatoms),file=f)
print(' FREENONHATOMS {}'.format(free_nonh_atoms),file=f)
print(' FREEFRAGMENTS {}'.format(free_fragments),file=f)
print(' FREEZEBONDS {}'.format(freeze_bonds),file=f)
print(' FREEZEANGLES {}'.format(freeze_angles),file=f)
print(' FREEZECISTRANS {}'.format(freeze_cistrans),file=f)
print(' FREEZEAMIDES {}'.format(freeze_amides),file=f)
if maxcoordnum != 'none':
print(' MAXCOORDNUMBER {}'.format(maxcoordnum),file=f)
if max_topo_diff != 'none':
print(' MAXTOPODIFF {}'.format(max_topo_diff),file=f)
print('END',file=f)
return

Loading…
Cancel
Save