@@ -459,41 +459,44 @@ class run_ligmerge_multithread(general_task):
ligands=variables_to_pass['ligands']
directory=variables_to_pass['directory']
check_time_limit_reached()
# check_time_limit_reached()
# pick two ligands
count2=0
whileTrue:
control_var=True
whilecontrol_var==True:
count2=count2+1
ligand1=random.choice(ligands)
ligand2=random.choice(ligands)
ifligand1!=ligand2:break# you've got different names
ifcount2>10000:
log("ERROR: I've tried 10,000 times to identify two unique ligands to serve as \"parents\" in the production of a crossover ligand. Aborting program...")
sys.exit(0)
pdb1=Molecule2()
pdb1.load_pdb(ligand1)
pdb2=Molecule2()
pdb2.load_pdb(ligand2)
control_var=False
break
aLigMerge=LigMerge()
merged,message=aLigMerge.main(pdb1,pdb2,'false','false','false',20)# so if it doesn't generate a hybrid molecule in 20 seconds, abort.
ifcontrol_var==True:
pdb1=Molecule2()
pdb1.load_pdb(ligand1)
pdb2=Molecule2()
pdb2.load_pdb(ligand2)
ifmergedisnotNone:
iflen(merged)>0:merged=merged[0]
else:mergedisNone
aLigMerge=LigMerge()
merged,message=aLigMerge.main(pdb1,pdb2,'false','false','false',20)# so if it doesn't generate a hybrid molecule in 20 seconds, abort.
program_output=program_output+"If you use AutoGrow 3.1.2 in your research, please cite the following reference:\n"
program_output=program_output+"If you use AutoGrow 3.1.3 in your research, please cite the following reference:\n"
program_output=program_output+"Durrant, J. D., ....\n\n"
returnprogram_output
...
...
@@ -1923,7 +1926,7 @@ def help_output():
underline('INTRODUCTION')
wrapper=textwrap.TextWrapper(140)
log(wrapper.fill('AutoGrow 3.1.2 is a genetic algorithm that attempts to automate the small-molecule inhibitor identification/optimization process. Though no substitute for the medicinal chemist, AutoGrow 3.1.2 can produce chemically feasible drug-like molecules that may supplement the chemist\'s efforts. Version 3 is significantly improved over previous versions. AutoGrow 1.0 and 2.0 simply replace selected hydrogen atoms with molecular fragments, often leading to molecules that are not easy to synthesize; AutoGrow 3 adds fragments using the AutoClickChem algorithm, thus mimicking the many reactions of click chemistry in silico and producing molecules that can actually be synthesized. Additionally, AutoGrow 1.0 and 2.0 add fragments without regard for the drug-like properties of the growing ligands, often leading to compounds that are not necessarily lead like; AutoGrow 3, in contrast, assesses the generated ligands for drug-like properties at each generation, discarding any compounds that do not meet the appropriate criteria.')+"\n")
log(wrapper.fill('AutoGrow 3.1.3 is a genetic algorithm that attempts to automate the small-molecule inhibitor identification/optimization process. Though no substitute for the medicinal chemist, AutoGrow 3.1.3 can produce chemically feasible drug-like molecules that may supplement the chemist\'s efforts. Version 3 is significantly improved over previous versions. AutoGrow 1.0 and 2.0 simply replace selected hydrogen atoms with molecular fragments, often leading to molecules that are not easy to synthesize; AutoGrow 3 adds fragments using the AutoClickChem algorithm, thus mimicking the many reactions of click chemistry in silico and producing molecules that can actually be synthesized. Additionally, AutoGrow 1.0 and 2.0 add fragments without regard for the drug-like properties of the growing ligands, often leading to compounds that are not necessarily lead like; AutoGrow 3, in contrast, assesses the generated ligands for drug-like properties at each generation, discarding any compounds that do not meet the appropriate criteria.')+"\n")
whilelen(glob.glob(directory+"*.mutant.pdb"))<vars['number_of_mutants_current_generation']:# keep generating new mutants until you've passed the allowable level
multi_threading(range(100),run_autoclick_multithread,vars_to_pass)# so, performing 100 ligands at a time
check_time_limit_reached()
# note that this is going to overshoot, and generate too many ligands. These will be deleted later
whilelen(glob.glob(directory+"*.crossover.pdb"))<vars['number_of_crossovers_current_generation']:# keep generating new crossovers until you've passed the allowable level
multi_threading(range(100),run_ligmerge_multithread,vars_to_pass)# so, performing 100 ligands at a time
# this is a lousy solution!!! Need to pass variables between threads!!! ******
check_time_limit_reached()
# note that this is going to overshoot, and generate too many ligands. These will be deleted later
##########################################
...
...
@@ -2948,7 +2951,7 @@ class run_main():
top_compounds=[]
# run the algorithm for the correct number of generations
generation_num=0
generation_num=1
# keep track of the time each generation takes
globalstart_time_current_generation
...
...
@@ -2960,17 +2963,23 @@ class run_main():
log("Converting receptor pdb files to pdbqt format if needed...")