Skip to content

Commit 8050c43

Browse files
committed
better logging of checkpoints
1 parent 3598d14 commit 8050c43

File tree

4 files changed

+8
-6
lines changed

4 files changed

+8
-6
lines changed

Diff for: CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* LAML version 0.0.5
2+
* better checkpoint logging
13
* LAML version 0.0.4
24
* add functionalities to create character matrices from fastq files (borrowed from a module of Cassiopeia)
35
* handle mismatch between character matrix and prior pickle

Diff for: laml_libs/Topology_search.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def __accept_proposal__(self,curr_score,new_score,t):
6868
p = min(exp((new_score-curr_score-1e-12)/T),1)
6969
return random() < p
7070

71-
def search(self,resolve_polytomies=True,maxiter=100,verbose=False,nreps=1,strategy=DEFAULT_STRATEGY,checkpoint_file="laml_topo_search._ckpt.txt"):
71+
def search(self,resolve_polytomies=True,maxiter=100,verbose=False,nreps=1,strategy=DEFAULT_STRATEGY,checkpoint_file=None):
7272
original_topos = self.treeTopoList
7373
original_params = self.params
7474
#nni_replicates = [(None,None)]*nreps
@@ -132,7 +132,7 @@ def search(self,resolve_polytomies=True,maxiter=100,verbose=False,nreps=1,strate
132132

133133
return best_trees,best_score,best_params
134134

135-
def __search_one__(self,strategy,maxiter=100,verbose=False,only_marked=False, checkpoint_file="laml_topo_search._ckpt.txt"):
135+
def __search_one__(self,strategy,maxiter=100,verbose=False,only_marked=False, checkpoint_file=None):
136136
# optimize branch lengths and other parameters for the starting tree
137137
mySolver = self.get_solver()
138138
score_tree_strategy = deepcopy(strategy)
@@ -164,8 +164,8 @@ def __search_one__(self,strategy,maxiter=100,verbose=False,only_marked=False, ch
164164
print("Current score: " + str(curr_score))
165165
stop_time = timeit.default_timer()
166166
print("Runtime (s):", stop_time - start_time)
167-
if nni_iter % 50 == 0:
168-
with open(checkpoint_file, "w") as fout:
167+
if nni_iter % chkpt_freq == 0 and checkpoint_file is not None:
168+
with open(checkpoint_file, "a") as fout:
169169
fout.write(f"NNI Iteration: {nni_iter}\n")
170170
fout.write(f"Current newick tree: {best_trees}\n")
171171
fout.write(f"Current negative-llh: {best_score}\n")

Diff for: laml_libs/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
nni_conv_eps = 1e-15 # additional NNI convergence threshold since conv_eps has several purposes
1818
dmin = 0.005
1919
dmax = 10
20+
chkpt_freq = 10
2021
DEFAULT_STRATEGY={'resolve_search_only':False,'only_marked':False,'ultra_constr':False,'fixed_phi':None,'fixed_nu':None,'local_brlen_opt':True}

Diff for: run_laml.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ def main():
212212
print("Running topology search in parallel...")
213213
else:
214214
print("Running topology search sequentially...")
215-
randval = int(random.random() * 1000)
216-
checkpoint_file = f"{prefix}._ckpt.{randval}.txt"
215+
checkpoint_file = f"{prefix}_ckpt.txt"
217216
opt_trees,max_score,opt_params = myTopoSearch.search(resolve_polytomies=resolve_polytomies,maxiter=args["maxIters"], verbose=args["verbose"], strategy=my_strategy, nreps=args['randomreps'],checkpoint_file=checkpoint_file)
218217
nllh = -max_score
219218

0 commit comments

Comments
 (0)