A series of Python3 script to lower the barrier of computing and simulating molecular and material systems.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

563 lines
40 KiB

#!/usr/bin/env python
2 years ago
import sys
import os
import argparse
from cmmde_orca import orca
from cmmde_dcdftb import dcdftb
from cmmde_dock import readpdb, splitpdb, addH, addcharge, sphgen, showsphere, gridgen, rigiddock,flexdock, translig, sdf2xyz, multiopt, checkopt, multiflexdock
from cmmde_mdpro import proprep, ligprep
from cmmde_dftb import poscar2gen, vasp2gen, dftb
from cmmde_qe import qe
from cmmde_nw import nwchem
from cmmde_xtb import xtb
import time
parser = argparse.ArgumentParser(description='Computational Molecular & Material Design Interface')
# Geometry input file, without this, your calculation won't proceed.
2 years ago
parser.add_argument('-i','--input',type=str,default='geom.xyz',help='Input geometri dalam koordinat Cartesian')
parser.add_argument('-cons','--constraints',type=str,default='None',help='Membekukan ikatan, sudut ikatan, dan sebagainya selama proses optimasi geometri. Periksa manual Orca 5.0 lebih lanjut mengenai ini.')
# Charge and spin multiplicity of the molecule.
2 years ago
parser.add_argument('-c','--charge',type=int,default=0, help='Muatan molekul')
parser.add_argument('-mult','--mult',type=int,default=1, help='Multiplisitas molekul')
# Inputs about the software, type of job, and computational methods.
2 years ago
parser.add_argument('-s','--software',type=str,default='orca',help='Software yang digunakan. Pilihan: orca, dcdftb, gromacs')
parser.add_argument('-j','--job',type=str,default='sp',help='Jenis perhitungan yang dilakukan. Pilihan: sp, opt, freq, md, mtd, td, dock.')
parser.add_argument('-m','--method',type=str,default='XTB2',help='Metode yang digunakan dalam perhitungan. Pilihan: XTB, XTB2, DFTB, DFTB2, DFTB3-diag, dan sebagainya.')
# Inputs about the frequency calculations in Orca.
2 years ago
parser.add_argument('-sfreq','--scalefreq',type=float,default=1, help='Faktor skala frekuensi yang digunakan.')
# Input yang berkaitan dengan perhitungan menggunakan software DCDFTBMD
parser.add_argument('-disp','--dispersion',type=str,default='None', help='Model koreksi dispersi jika menggunakan software DCDFTB. Pilihan: None, D3, D3BJ, D3H5.')
parser.add_argument('-para','--parapath',type=str,default='/Users/adit/opt/dftbplus/external/slakos/origin/3ob-3-1',help='Lokasi folder berisikan himpunan parameter DFTB yang akan digunakan.')
2 years ago
parser.add_argument('-iter','--iter',type=int,default=9999, help='Jumlah iterasi dalam optimasi geometri dan jenis perhitungan lainnya')
parser.add_argument('-ens','--ensembel',type=str,default='NVE', help='Ensembel yang digunakan dalam simulasi dinamika molekul. Pilihan: NVE, NVT, dan NPT.')
parser.add_argument('-tstat','--thermostat',type=str,default='andersen', help='Termostat yang digunakan dalam simulasi NVT. Pilihan: andersen,berendsen,dan nose')
parser.add_argument('-t','--temp', type=str, default='298.15',help='Suhu yang digunakan dalam perhitungan frekuensi maupun simulasi MD dan perhitungan frekuensi dalam satuan Kelvin.')
parser.add_argument('-dt','--deltat',type=float, default=1.0, help='Selang waktu integrasi dalam simulasi dinamika molekul dalam satuan femtodetik.')
parser.add_argument('-mdprint','--mdprint',type=int,default=10, help='Berapa step sekali struktur dicetak. Default=10.')
parser.add_argument('-rest','--restart',type=str,default='false',help='Apakah dilakukan restart simulasi MD?')
parser.add_argument('-nvtdir','--nvtdir',type=str,default='../NVT')
parser.add_argument('-ns','--nstep', type=int, default=50000,help='Banyaknya step dalam simulasi MD.')
parser.add_argument('-np','--nproc',type=int,default=1, help='Jumlah CPU yang digunakan')
# Opsi kondisi PBC
parser.add_argument('-a1','--a1',type=float, default=0, help='panjang vektor a1')
parser.add_argument('-a2','--a2',type=float, default=0, help='panjang vektor a2')
parser.add_argument('-a3','--a3',type=float, default=0, help='panjang vektor a3')
parser.add_argument('-b1','--b1',type=float, default=0, help='panjang vektor b1')
parser.add_argument('-b2','--b2',type=float, default=0, help='panjang vektor b2')
parser.add_argument('-b3','--b3',type=float, default=0, help='panjang vektor b3')
parser.add_argument('-c1','--c1',type=float, default=0, help='panjang vektor c1')
parser.add_argument('-c2','--c2',type=float, default=0, help='panjang vektor c2')
parser.add_argument('-c3','--c3',type=float, default=0, help='panjang vektor c3')
# Input spesifik program DFTB+
parser.add_argument('-hcorr','--hcorr',type=str, default='hdamp',help='Koreksi ikatan hidrogen. Default: hdamp. Pilihan: H5.')
# Input yang berkaitan dengan penyiapan sistem larutan
parser.add_argument('-mt', '--terlarut', type=str, help='Nama file molekul terlarut dalam format .xyz (ditulis tanpa ekstensi).')
parser.add_argument('-ct', '--c_terlarut', type=str, help='Muatan bersih molekul terlarut.',default=0)
parser.add_argument('-pt', '--persen_terlarut', type=str, default=50, help='Persen massa terlarut. Jika lebih dari satu terlarut, pisahkan dengan koma.')
parser.add_argument('-pp', '--persen_pelarut', type=str, default=50, help='Persen massa pelarut. Default:50')
parser.add_argument('-l', '--lapang', type=float, default=5, help='Panjang tambahan (Angstrom) pada rusuk kubus untuk menghindari bad contact. Default: 10.0.')
parser.add_argument('-rc','--rcol',type=float,default=0, help='Additional Coulombic radius for PME calculation')
2 years ago
parser.add_argument('-gen','--generate_dftbinp',type=str,default='false',help='Apakah ingin mengkonversi ke dalam format koordinat xyz?')
parser.add_argument('-mp', '--pelarut', type=str, help='Nama file molekul pelarut dalam format .xyz (ditulis tanpa ekstensi).')
parser.add_argument('-nequil','--nequil',type=int, default=50000, help='Jumlah step pada saat ekuilibrasi.')
parser.add_argument('-nnpt','--nnpt',type=int, default=50000, help='Jumlah step pada saat ekuilibrasi NPT.')
parser.add_argument('-comp','--compress',type=float, default=4.5e-6, help='Nilai kompresibilitas. Default=4.5e-6.')
parser.add_argument('-nprod','--nprod',type=int, default=400000, help='Jumlah step pada saat production.')
parser.add_argument('-prod', '--production', type=str, default='None', help='Ensembel yang digunakan dalam production run. Pilihan:nve,npt,nvt.')
parser.add_argument('-cp', '--c_pelarut', type=int, default=0, help='Muatan bersih molekul pelarut')
parser.add_argument('-ctype','--charge_type',type=str, default='gas', help='Tipe muatan yang digunakan untuk parameterisasi muatan.')
parser.add_argument('-Nump','--NumPelarut', type=int, default=100, help='Jumlah molekul pelarut maksimum dalam sistem larutan. Default = 100.')
parser.add_argument('-cat','--cation',type=str, default='none',help='Kation yang digunakan untuk menetralkan muatan sistem larutan.')
parser.add_argument('-p', '--pressure', default=1.0, type=float, help='Tekanan dalam satuan bar')
1 year ago
parser.add_argument('--packmol', type=str, default='/Users/adit/opt/packmol/packmol')
2 years ago
# Opsi untuk melakukan restart simulasi MD
parser.add_argument('-traj','--traject',type=str, default='../NVT/traject',help='File trayektori dari simulasi sebelumnya')
parser.add_argument('-vel','--velocity',type=str, default='../NVT/velocity',help='File kecepatan atom dari simulasi sebelumnya')
parser.add_argument('-inp','--dftbinp',type=str, default='../NVT/dftb.inp',help='File dftb.inp dari simulasi sebelumnya.')
# Opsi untuk dinding potensial virtual
parser.add_argument('-soft','--soft',type=str,default='false',help='Apakah dinding potensial akan digunakan?. Pilihan: true, false.')
parser.add_argument('-softtype','--softtype',type=str,default='SPHERE',help='Jenis dinding apakah yang akan anda pakai? Baca lebih lanjut manual DCDFTBMD.')
parser.add_argument('-softrange','--softrange',type=float,default=10,help='Ukuran dinding potensial yang anda gunakan. Default = 10 angstrom')
parser.add_argument('-softcenter','--softcenter',type=str,default='COM',help='Jenis pusat koordinat dinding potensial. Default = COM')
parser.add_argument('-metarest','--metarest',type=str,default='false',help='Apakah dilakukan restart simulasi metadinamika?. Pilihan: true, false.')
parser.add_argument('-metafreq','--metafreq',type=int,default=100, help='Dalam berapa step sekali potensial Gaussian ditambahkan?')
parser.add_argument('-metaheight','--metaheight',type=float,default=3.0e-3,help='Ketinggian potensial Gaussian dalam satuan Hartree. Default = 3.0e-3')
parser.add_argument('-cv','--cvtype',type=str,default='coordnum',help='Pilihan collective variable (CV) yang digunakan. Pilihan: coordnum, distance, angle, dihedral, distancediff, distanceadd, meandistance, pointplanedistance.')
parser.add_argument('-metawidth','--metawidth',type=float,default=0.1,help='Lebar potensial Gaussian yang digunakan (dalam satuan yang sama dengan satuan cv). Default = 0.1')
parser.add_argument('-pow1','--pow1',type=float,default=6,help='Nilai pangkat pertama pada definisi bilangan koordinasi rasional. Default = 6')
parser.add_argument('-pow2','--pow2',type=float,default=12,help='Nilai pangkat kedua pada definisi bilangan koordinasi rasional. Default = 12')
parser.add_argument('-rcut','--rcut',type=float,default=1.6,help='Jarak cutoff pada definisi bilangan koordinasi dalam satuan angstrom. Default = 1.6')
parser.add_argument('-fesstart','--fesstart',type=float,default=0, help='Titik minimum CV. Default = 0.')
parser.add_argument('-fesend','--fesend',type=float,default=1, help='Titik maksimum CV. Defalt = 1.')
parser.add_argument('-fesbin','--fesbin',type=float,default=0.01,help='Selang CV. Default = 0.01')
parser.add_argument('-ag1','--ag1',type=str,help='Grup atom pertama dalam sebuah CV.')
parser.add_argument('-ag2','--ag2',type=str,help='Grup atom kedua dalam sebuah CV.')
parser.add_argument('-ag3','--ag3',type=str,help='Grup atom ketiga dalam sebuah CV.')
parser.add_argument('-ag4','--ag4',type=str,help='Grup atom keempat dalam sebuah CV.')
# Input terkait DC setup
parser.add_argument('-bufrad','--bufrad',type=float,default=3.0,help='Radius buffer yang digunakan dalam sebuah subsistem. Default: 3.0')
parser.add_argument('-delta','--delta',type=float,default=3.0,help='Panjang rusuk kubus virual yang dibuat untuk membelah-belah subsistem. Default: 3.0')
parser.add_argument('-opttype','--opttype',type=str,default='bfgs', help='Jenis algoritma optimasi geometri yang digunakan dalam program DFTBUP maupun DCDFTBMD. Default: bfgs. Pilihan: sd, cg, qm, fire.')
parser.add_argument('-freqtype','--freqtype',type=int,default=1, help='Jenis perhitungan frekuensi vibrasi yang dilakukan, analitik (1) atau numerik (2). Default: 1, pilihan: 2.')
parser.add_argument('-econv','--econv',type=float,default=1e-6, help='Batas konvergensi perhitungan energi.')
parser.add_argument('-dconv','--dconv',type=float,default=1e-6, help='Batas konvergensi perhitungan gradien.')
# Input yang berkaitan dengan persiapan docking
parser.add_argument('-ligname','--ligname',type=str,help='Nama ligan yang ingin diekstrak strukturnya')
parser.add_argument('-ligand','--ligand',type=str,help='File ligand dalam format .mol2. Format harus .xyz jika ligand bukan merupakan native ligand.')
parser.add_argument('-dockrange','--dockrange',type=float,default=10,help='Radius yang diperhitungkan sebagai sisi aktif di sekitar ligan asli.')
parser.add_argument('-chargetype','--chargetype',type=str,default='qtpie',help='Tipe muatan parsial untuk ligan. Pilihan: qtpie, gasteiger, eem, eem2015ba, eem2015bm, eem2015bn, eem2015ha, eem2015hm, eem2015hn, eqeq, mmff94, dan qeq.')
parser.add_argument('-calcrmsd','--calcrmsd',type=str,default='no',help='Apakah ingin menghitung RMSD saat docking?')
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,default='none',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=8.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.')
2 years ago
# 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
parser.add_argument('-nrun','--nrun',type=int,default=1,help='Jumlah banyaknya sampling path yang dilakukan. Default: 1.')
parser.add_argument('-npoint','--npoint',type=int,default=25,help='Jumlah banyaknya titik untuk interpolasi jalur reaksi. Default: 25.')
parser.add_argument('-anopt','--anopt',type=int,default=10,help='Jumlah maksimum step optimasi geometri yang dilakukan. Default: 10.')
parser.add_argument('-kpush','--kpush',type=float,default=0.003,help='Faktor skala untuk variasi nilai RMSD. Default: 0.003 atomic unit.')
parser.add_argument('-kpull','--kpull',type=float,default=-0.015,help='Tetapan pegas untuk menarik posisi atom. Default: -0.015 atomic unit.')
parser.add_argument('-ppull','--ppull',type=float,default=0.05,help='Kekuatan tarikan pegas teroptimasi. Default: 0.05 atomic unit.')
parser.add_argument('-alp','--alp',type=float,default=1.2,help='Lebar potensial Gaussian dalam satuan Angstrom. Default: 1.2 Angstrom.')
# Scanning geometri menggunkaan xTB standalone
parser.add_argument('-dist','--distance',type=str,default='None',help='Jarak antara dua buah atom dalam format: Serial1,Serial2,Jarak. Contoh: 4,1,1.5.')
parser.add_argument('-ang','--angle',type=str,default='None',help='Sudut antara tiga buah atom dalam format: Serial1,Serial2,Serial3,Sudut. Contoh: 4,1,3,180.')
parser.add_argument('-dih','--dihedral',type=str, default='None',help='Sudut dihedral antara empat buah atom dalam format: Serial1,Serial2,Serial4,Dihedral. Contoh: 4,1,3,2,120.')
parser.add_argument('-scanmode','--scanmode',type=str,default='None',help='Mode scan geometri yang diinginkan. Pilihan: concerted, sequential.')
parser.add_argument('-scan','--scan',type=str,default='None',help='Rentang Scanning dalam format: Titik1,Titik2,JumlahTitik. Contoh:2.5,1.0,100.')
# Konstrain dan Fixing Atom pada Program XTB Standalone
parser.add_argument('-fixatm','--fixedatoms',type=str,default='None',help='Label atom-atom yang dibuat fix.')
parser.add_argument('-fixele','--fixedelements',type=str,default='None',help='Simbol unsur atom yang dibuat fix.')
# Input untuk perhitungan NEB
parser.add_argument('-produk','--produk',type=str,help='Struktur produk yang digunakan dalam interpolasi NEB dalam format koordinat Cartesian.')
parser.add_argument('-trans','--transitionstate',default='None',type=str,help='Struktur perkiraan keadaan transisi yang digunakan dalam format koordinat Cartesian.')
# Input untuk IRC
parser.add_argument('-irciter','--irciter',type=int,default=20,help='Iterasi maksimum IRC Orca.')
parser.add_argument('-printlevel','--printlevel',type=str,default='1',help='Print level dalam IRC Orca. Default=1')
parser.add_argument('-inithess','--inithess',type=str,default='Read',help='Cara menginisiasi Hessian. Default: Read.')
parser.add_argument('-grid','--grid',type=int,default=2,help='Ukuran grid dalam integrasi Orca.')
parser.add_argument('-finalgrid','--finalgrid',type=int,default=4,help='Ukuran final grid dalam integrasi Orca.')
# Input untuk perhitungan bergantung waktu
parser.add_argument('-nr','--nroots',type=int,default=5,help='Jumlah orbital aktif yang diperhitungkan dalam perhitungan bergantung waktu.')
parser.add_argument('-tda','--tda',type=str,default='false',help='Apakah akan digunakan pendekatan Tamm-Dancoff. Default = false.')
# Input untuk perhitungan TD-DFTB
parser.add_argument('-ts','--targetstate',type=int,default=0, help='Target orbital transisi yang dituju.')
parser.add_argument('-multtrans','--multtrans',type=int,default=1, help='Multiplisitas spin transisi elektronik.')
parser.add_argument('-ocsstr','--ocsstr',type=str,default='true', help='Menghitung osscilator strength dan momen dipol transisi elektronik.')
parser.add_argument('-wt','--writetrans',type=str,default='true', help='Menulis informasi detail mengenai transisi elektronik yang terjadi.')
parser.add_argument('-lc','--longrange',type=str,default='false', help='Apakah akan dilakukan koreksi interaksi jarak jauh.')
# Input untuk metode multiskala
parser.add_argument('-qmatoms','--qmatoms',type=str,default='None',help='Indeks dari atom-atom di lapisan QM. Indeks dimulai dari nol.')
parser.add_argument('-activeatoms','--activeatoms',type=str,default='1:-1',help='Indeks atom aktif yang digunakan untuk perhitungan.')
parser.add_argument('-hessfile','--hessfile',type=str,default='None',help='File Hessian hasil optimasi geometri atau berbagai perhitungan sebelumnya.')
parser.add_argument('-tc','--totalcharge',type=int,default=0,help='Muatan total molekul.')
parser.add_argument('-tmult','--totalmult',type=int,default=1,help='Multiplisitas spin total molekul.')
parser.add_argument('-qm2method','--qm2method',type=str,default='None',help='Custom method untuk lapisan QM2')
parser.add_argument('-qm2basis','--qm2basis',type=str,default='None',help='Custom himpunan basis untuk lapisan QM2')
# Informasi input padatan
parser.add_argument('-kpts','--kpts',type=str,default='1x1x1',help='Informasi K-points yang digunakan. Ditulis sebagai: 1x1x1, 2x2x2, dsb.')
# Input terkait perhitungan Atom in Molecules
parser.add_argument('-aim','--aim',type=str, default='false',help='Apakah akan dilakukan perhitungan AIM untuk interaksi non-kovalen?')
# Input terkait penggunaan Quantum-Espresso
parser.add_argument('-mode','--mode',type=str,default='from_scratch',help='Mode perhiungan dalam software Quantum-Espresso. Default: from_scratch. Pilihan: from_scratch, restart. ')
parser.add_argument('-pseudo','--pseudo',type=str,default='/home/adit/opt/qe-7.0/pseudo',help='Folder tempat menyimpan file pseudo potential.')
parser.add_argument('-outdir','--outdir',type=str,default='./out',help='Folder tempat menyimpan output.')
parser.add_argument('-unit','--unit',type=str,default='angstrom',help='Satuan yang digunakan dalam mendefinisikan parameter sel dan posisi atom. Default: angstrom. Pilihan: angstrom, bohr')
parser.add_argument('-bravais','--bravais',type=int,default=0,help='Indeks Bravais yang diperlukan untuk mengidentifikasi kristal pada software Quantum-Espresso.')
parser.add_argument('-ecutwfc','--ecutwfc',type=float,default=60.0,help='Cutoff energi kinetik untuk fungsi gelombang dalam satuan Ry. Default: 60.0 Ry.')
parser.add_argument('-ecutrho','--ecutrho',type=float,default=720.0,help='Cutoff energi kinetikr untuk rapat muatan dan potensial. Default: 720.0 Ry.')
parser.add_argument('-mix','--mixing_beta',type=float,default=0.7,help='Koefisien mixing untuk self-consistency.')
parser.add_argument('-conv_thr','--conv_thr',type=float,default=1e-8,help='Batas nilai konvergensi.')
parser.add_argument('-dftfunc','--dftfunc',type=str,default='pbe',help='Fungsional DFT yang digunakan. Default: pbe')
parser.add_argument('-extpseudo','--extpseudo',type=str,default='UPF',help='Ekstensi dari file pseudopotensial. Default: UPF.')
parser.add_argument('-optalgo','--optalgo',type=str,default='bfgs',help='Algoritma untuk optimasi geometri. Default: bfgs. Pilihan: damp, fire, verlet, langevin, langevin-smc, beeman.')
parser.add_argument('-cpress','--cellpress',type=float,default=0.0,help='Tekanan sel dalam satuan kilobar yang digunakan dalam Quantum-Espresso. Default:0.0.')
parser.add_argument('-press_conv','--press_conv_thr',type=float,default=0.5,help='Kriteria konvergensi untuk tekanan sel. Default=0.5 kbar.')
parser.add_argument('-nband','--nband',type=int,default=8,help='Jumlah tingkat energi yang ingin diplot dalam DOS.')
parser.add_argument('-occ','--occ',type=str,default='tetrahedra',help='Metode smearing yang digunakan. Default: tetrahedra. Pilihan: smearing, tetrahedra_lin, tetrahedra_opt, fixed, from_input.')
parser.add_argument("-q","--queue",type=str,default="true",help="Apakah akan menggunakan sistem antrian atau tidak. Default: true")
2 years ago
opt=parser.parse_args(sys.argv[1:])
# Menggunakan molekul dengan format smiles
if ('.xyz' or '.pdb' or 'POSCAR' or '.vasp' or '.poscar') in opt.input:
geom = opt.input
elif '.mol2' in opt.input:
if opt.queue == "true":
with open('run_babel.sh','w') as fout:
print("""#!/bin/bash
2 years ago
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
obabel {} -O geom.xyz""".format(opt.nproc,opt.input),file=fout)
os.system('sbatch run_babel.sh')
else:
with open('run_babel.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
obabel {} -O geom.xyz""".format(opt.nproc,opt.input),file=fout)
os.system("chmod +x run_babel.sh")
os.system('./run_babel.sh')
2 years ago
geom = 'geom.xyz'
elif ('.mol2' not in opt.input and '.xyz' not in opt.input and '.pdb' not in opt.input and '.vasp' not in opt.input and '.poscar' not in opt.input and 'POSCAR' not in opt.input and '.gen' not in opt.input):
os.system("echo '{}' > geom.smi".format(opt.input))
if opt.queue == "true":
with open('run_babel.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
obabel geom.smi -O geom.xyz --gen3d""".format(opt.nproc),file=fout)
os.system('sbatch run_babel.sh')
else:
with open('run_babel.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
obabel geom.smi -O geom.xyz --gen3d""".format(opt.nproc),file=fout)
os.system("chmod +x run_babel.sh")
os.system('./run_babel.sh')
2 years ago
while not os.path.exists('geom.xyz'):
time.sleep(3)
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,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)
2 years ago
### NWChem
if opt.software == 'nwchem':
nwchem(opt.job,opt.method,opt.nproc,geom,opt.charge,opt.mult,opt.scalefreq,opt.restart,opt.conv_thr,opt.iter)
### DCDFTBMD
if opt.software == 'dcdftb':
dcdftb(opt.job,opt.method,geom,opt.charge,opt.mult,opt.dispersion,opt.parapath,opt.temp,opt.pressure,opt.ensembel,opt.thermostat,opt.deltat,opt.nstep,opt.mdprint,opt.a1,opt.a2,opt.a3,opt.b1,opt.b2,opt.b3,opt.c1,opt.c2,opt.c3,opt.restart,opt.traject,opt.velocity,opt.dftbinp,opt.soft,opt.softtype,opt.softrange,opt.softcenter,opt.metarest,opt.metafreq,opt.metaheight,opt.cvtype,opt.metawidth,opt.pow1,opt.pow2,opt.rcut,opt.fesstart,opt.fesend,opt.fesbin,opt.ag1,opt.ag2,opt.ag3,opt.ag4,opt.solvent,opt.nroots,opt.targetstate,opt.multtrans,opt.ocsstr,opt.writetrans,opt.longrange,opt.bufrad,opt.delta,opt.opttype,opt.freqtype,opt.econv, opt.dconv)
if opt.software == 'dock':
if opt.job == 'readpdb':
readpdb(opt.input)
if opt.job == 'splitpdb':
splitpdb(opt.input,opt.ligname)
if opt.job == 'addH':
addH(opt.input)
if opt.job == 'addcharge':
addcharge(opt.input,opt.chargetype)
if opt.job == 'sphgen':
sphgen(opt.input)
if opt.queue == 'true':
2 years ago
with open('run_sphgen.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/sphgen
$DOCK_DIR/sphere_selector protein.sph {} {}""".format(opt.nproc,opt.ligand,opt.dockrange),file=fout)
os.system("sbatch run_sphgen.sh")
else:
with open('run_sphgen.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/sphgen
$DOCK_DIR/sphere_selector protein.sph {} {}""".format(opt.nproc,opt.ligand,opt.dockrange),file=fout)
os.system("chmod +x run_sphgen.sh")
os.system("./run_sphgen.sh")
2 years ago
if opt.job == 'showsphere':
showsphere()
if opt.job == 'gridgen':
gridgen(opt.input)
if opt.queue == "true":
with open('run_grid.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/grid -i grid.in""".format(opt.nproc),file=fout)
os.system("sbatch run_grid.sh")
else:
with open('run_grid.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/grid -i grid.in""".format(opt.nproc),file=fout)
os.system("chmod +x run_grid.sh")
os.system("./run_grid.sh")
2 years ago
if opt.job == 'rigiddock':
rigiddock(opt.ligand,opt.calcrmsd)
if opt.queue == "true":
with open('run_rigiddock.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/dock6 -i rigid.in -o rigid.out""".format(opt.nproc),file=fout)
os.system("sbatch run_rigiddock.sh")
else:
with open('run_rigiddock.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/dock6 -i rigid.in -o rigid.out""".format(opt.nproc),file=fout)
os.system("chmod +x run_rigiddock.sh")
os.system("./run_rigiddock.sh")
2 years ago
if opt.job == 'flexdock':
flexdock(opt.ligand,opt.calcrmsd)
if opt.queue == "true":
with open('run_flexdock.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/dock6 -i flex.in -o flex.out""".format(opt.nproc),file=fout)
os.system("sbatch run_flexdock.sh")
else:
with open('run_flexdock.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
$DOCK_DIR/dock6 -i flex.in -o flex.out""".format(opt.nproc),file=fout)
os.system("chmod +x run_flexdock.sh")
os.system("./run_flexdock.sh")
2 years ago
if opt.job == 'translig':
translig(opt.ligand)
if opt.job=='sdf2xyz' and opt.software == 'dock':
sdf2xyz(opt.ligand)
if opt.job == 'multiflexdock' and opt.software == 'dock':
multiflexdock(opt.nligands,opt.chargetype)
if opt.job == 'multiopt' and opt.software == 'dock':
multiopt(opt.nligands)
if opt.job == 'checkopt' and opt.software == 'dock':
checkopt(opt.nligands)
if opt.software == 'dftb':
if '.xyz' in opt.input or '.gen' in opt.input:
2 years ago
geom = opt.input
elif 'POSCAR' in opt.input or '.poscar' in opt.input:
poscar2gen(opt.input)
geom = 'in.gen'
elif 'vasp' in opt.input:
vasp2gen(opt.input)
geom = 'in.gen'
dftb(geom,opt.job,opt.activeatoms,opt.method,opt.parapath,opt.dispersion,opt.kpts,opt.hcorr)
if opt.queue == "true":
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
cp cmmd.in dftb_in.hsd
$DFTB_COMMAND cmmd.in > cmmd.out""".format(opt.nproc),file=fout)
os.system('sbatch run.sh')
else:
with open('run.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS={}
cd $PWD
cp cmmd.in dftb_in.hsd
$DFTB_COMMAND cmmd.in > cmmd.out""".format(opt.nproc),file=fout)
os.system("chmod +x run.sh")
os.system('./run.sh')
2 years ago
if opt.software == 'qe':
qe(opt.input,opt.job,opt.mode,opt.pseudo,opt.outdir,opt.bravais,opt.unit,opt.ecutwfc,opt.ecutrho,opt.mixing_beta,opt.conv_thr,opt.dftfunc,opt.extpseudo,opt.kpts,opt.optalgo,opt.cellpress,opt.press_conv_thr,opt.nband,opt.occ)
# RUNNING SCRIPT
if opt.software == 'orca':
if opt.queue=="true":
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task={}
#SBATCH --time=168:0:0
export LD_LIBRARY_PATH=/home/adit/opt/openmpi411/lib:$LD_LIBRARY_PATH
export PATH=/home/adit/opt/openmpi411/bin:$PATH
export OMP_NUM_THREADS=1
cd $PWD
$ORCA_COMMAND cmmd.in > cmmd.out --oversubscribe""".format(opt.nproc),file=fout)
os.system('sbatch run.sh')
else:
with open('run.sh','w') as fout:
print("""#!/bin/bash
cd $PWD
$ORCA_COMMAND cmmd.in > cmmd.out --oversubscribe""",file=fout)
os.system("chmod +x run.sh")
os.system('./run.sh')
2 years ago
if opt.software == 'nwchem':
if opt.queue=="true":
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task={}
#SBATCH --time=168:0:0
export LD_LIBRARY_PATH=/home/adit/opt/openmpi411/lib:$LD_LIBRARY_PATH
export PATH=/home/adit/opt/openmpi411/bin:$PATH
export OMP_NUM_THREADS=1
cd $PWD
$NWCHEM_COMMAND cmmd.in > cmmd.out""".format(opt.nproc),file=fout)
os.system('sbatch run.sh')
else:
with open('run.sh','w') as fout:
print("""#!/bin/bash
cd $PWD
$NWCHEM_COMMAND cmmd.in > cmmd.out""",file=fout)
os.system("chmod +x run.sh")
os.system('./run.sh')
2 years ago
if opt.software == 'qe':
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task={}
#SBATCH --time=168:0:0
export OMP_NUM_THREADS=1
cd $PWD
mpirun -np {} $QE_COMMAND < cmmd.in > cmmd.out""".format(opt.nproc,opt.nproc),file=fout)
os.system('sbatch run.sh')
if opt.software == 'dcdftb':
if opt.queue == 'true':
os.system("cp cmmd.in dftb.inp")
with open('run.sh','w') as fout:
print("""#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS={}
cd $PWD
$DCDFTB_COMMAND
mv dftb.out cmmd.out
mv traject traject.xyz""".format(opt.nproc),file=fout)
os.system('sbatch run.sh')
else:
os.system("cp cmmd.in dftb.inp")
with open('run.sh','w') as fout:
print("""#!/bin/bash
2 years ago
cd $PWD
$DCDFTB_COMMAND
mv dftb.out cmmd.out
1 year ago
if [ -f traject.xyz ]; then
mv traject traject.xyz
fi""",file=fout)
os.system("chmod +x run.sh")
os.system('./run.sh')
2 years ago
if opt.software == 'gromacs':
if opt.queue == 'true':
2 years ago
with open('run.sh','w') as fout:
print("""#!/bin/bash
2 years ago
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=168:0:0
export OMP_NUM_THREADS=1
2 years ago
cd $PWD
$GROMACS_COMMAND -mt {} -mp {} -ct {} -pt {} -pp {} -l {} -cat {} -gen {} -Nump {} -prod {} -nprod {} -nequil {} -dt {} -ctype {} -nnpt {} -comp {} -np {} -rc {} -t {}""".format(opt.terlarut,opt.pelarut,opt.c_terlarut,opt.persen_terlarut,opt.persen_pelarut,opt.lapang,opt.cation,opt.generate_dftbinp,opt.NumPelarut,opt.production,opt.nprod,opt.nequil,opt.deltat,opt.charge_type,opt.nnpt,opt.compress,opt.nproc,opt.rcol,opt.temp),file=fout)
2 years ago
os.system('sbatch run.sh')
else:
with open('run.sh','w') as fout:
print("""#!/bin/bash
export OMP_NUM_THREADS=1
2 years ago
cd $PWD
$GROMACS_COMMAND -mt {} -mp {} -ct {} -pt {} -pp {} -l {} -cat {} -gen {} -Nump {} -prod {} -nprod {} -nequil {} -dt {} -ctype {} -nnpt {} -comp {} -np {} -rc {} -t {}""".format(opt.terlarut,opt.pelarut,opt.c_terlarut,opt.persen_terlarut,opt.persen_pelarut,opt.lapang,opt.cation,opt.generate_dftbinp,opt.NumPelarut,opt.production,opt.nprod,opt.nequil,opt.deltat,opt.charge_type,opt.nnpt,opt.compress,opt.nproc,opt.rcol,opt.temp),file=fout)
2 years ago
os.system('chmod +x run.sh')
os.system('./run.sh')
2 years ago
if opt.job == 'proprep' and opt.software == 'gmx':
proprep(opt.protein)
if opt.job == 'ligprep' and opt.software == 'gmx':
ligprep(opt.ligand,opt.charge)
# Program XTB Standalone
if opt.software == 'xtb':
xtb(opt.job,geom,opt.nproc,opt.produk,opt.temp,opt.nrun,opt.npoint,opt.anopt,opt.kpush,opt.kpull,opt.ppull,opt.alp,opt.distance,opt.angle,opt.dihedral,opt.scanmode,opt.iter,opt.scan,opt.solvent,opt.charge,opt.mult,opt.method,opt.fixedatoms,opt.fixedelements,opt.queue)