@@ -37,8 +37,6 @@ def __init__(self, files, args):
3737 args .polarization_error = 0.5
3838 if args .polarization_error > 0. :
3939 logger .info ("Polarization error p=%f" , args .polarization_error )
40- if args .factr :
41- args .solver_args ['factr' ] = args .factr
4240 # Data-related stuff
4341 self ._load_data (files )
4442 self ._validate_data ()
@@ -109,7 +107,7 @@ def _perform_thinning(self, thinning):
109107 elif np .any (ns > 0 ):
110108 logger .warn ("Not thinning yet undistinguished lineages are present" )
111109
112- def _normalize_data (self , length_cutoff , no_filter ):
110+ def _normalize_data (self , length_cutoff , filter ):
113111 ## break up long spans
114112 self ._contigs , attrs = estimation_tools .break_long_spans (self ._contigs , length_cutoff )
115113 if not attrs :
@@ -128,7 +126,7 @@ def _normalize_data(self, length_cutoff, no_filter):
128126 var = np .average ((het - avg ) ** 2 , weights = w ) * (n / (n - 1. ))
129127 sd = np .sqrt (var )
130128 logger .debug ("Average/sd het:%f(%f)" , avg , sd )
131- if not no_filter :
129+ if filter :
132130 logger .debug ("Keeping contigs within +-3 s.d. of mean" )
133131 logger .debug ("Average heterozygosity (derived / total bases) by data set (* = dropped)" )
134132 ci = 0
@@ -139,7 +137,7 @@ def _normalize_data(self, length_cutoff, no_filter):
139137 for attr in attrs [key ]:
140138 het = attr [- 1 ]
141139 mytpl = tpl
142- if no_filter or abs (het - avg ) <= 3 * sd :
140+ if not filter or abs (het - avg ) <= 3 * sd :
143141 new_contigs .append (self ._contigs [ci ])
144142 else :
145143 mytpl += " *"
@@ -282,7 +280,7 @@ def __init__(self, files, args):
282280 self .rescale (args .tK ),
283281 knot_spans , args .offset ))
284282 # Perform initial filtering for weird contigs
285- self ._normalize_data (args .length_cutoff , args .no_filter )
283+ self ._normalize_data (args .length_cutoff , args .filter )
286284
287285 # Initialize members
288286 self ._init_parameters (args .theta , args .rho )
@@ -295,7 +293,8 @@ def __init__(self, files, args):
295293 self ._init_optimizer (args , files , args .outdir ,
296294 1 , # set block-size to knots
297295 "L-BFGS-B" , # TNC tends to overfit for initial pass
298- args .tolerance , learn_rho = False )
296+ args .xtol , args .ftol ,
297+ learn_rho = False )
299298 self ._optimizer .run (1 )
300299
301300 # Thin the data
@@ -305,7 +304,7 @@ def __init__(self, files, args):
305304 self ._init_hidden_states (args .prior_model , args .M )
306305 self ._init_inference_manager (args .polarization_error )
307306 self ._init_optimizer (args , files , args .outdir , args .blocks ,
308- args .algorithm , args .tolerance , learn_rho = True )
307+ args .algorithm , args .xtol , args . ftol , learn_rho = True )
309308
310309 def _init_parameters (self , theta = None , rho = None ):
311310 ## Set theta and rho to their default parameters
@@ -363,16 +362,16 @@ def _init_model(self, pieces, N0, t1, tK, spline_class):
363362 mods [- 1 ][- 1 ] = y0
364363 self ._model = SMCTwoPopulationModel (mods [0 ], mods [1 ], split )
365364
366- def _init_optimizer (self , args , files , outdir , blocks , algorithm , tolerance , learn_rho ):
365+ def _init_optimizer (self , args , files , outdir , blocks , algorithm , xtol , ftol , learn_rho ):
367366 if self .npop == 1 :
368367 self ._optimizer = optimizer .SMCPPOptimizer (
369- self , algorithm , tolerance , blocks , args .solver_args )
368+ self , algorithm , xtol , ftol , blocks , args .solver_args )
370369 # Also optimize knots in 1 pop case. Not yet implemented
371370 # for two pop case.
372371 # self._optimizer.register(optimizer.KnotOptimizer())
373372 elif self .npop == 2 :
374373 self ._optimizer = optimizer .TwoPopulationOptimizer (
375- self , algorithm , tolerance , blocks , args .solver_args )
374+ self , algorithm , xtol , ftol , blocks , args .solver_args )
376375 smax = np .sum (self ._model .distinguished_model .s )
377376 self ._optimizer .register (
378377 optimizer .ParameterOptimizer ("split" , (0. , smax ), "model" ))
@@ -397,26 +396,26 @@ def __init__(self, files, args):
397396
398397 self ._hidden_states = np .array ([0. , np .inf ])
399398 self ._init_inference_manager (False )
400- self ._init_optimizer (args , files , args .outdir , args .algorithm , args .tolerance , args .blocks , False )
399+ self ._init_optimizer (args , files , args .outdir , args .algorithm , args .xtol , args . ftol , args .blocks , False )
401400 # Hack to only estimate split time.
402401 self ._optimizer .run (1 )
403402
404403 # After inferring initial split time, thin
405404 self ._perform_thinning (args .thinning )
406- self ._normalize_data (args .length_cutoff , args .no_filter )
405+ self ._normalize_data (args .length_cutoff , args .filter )
407406
408407 self ._init_hidden_states (args .pop1 , args .M )
409408 self ._init_inference_manager (False )
410- self ._init_optimizer (args , files , args .outdir , args .algorithm , args .tolerance , args .blocks )
409+ self ._init_optimizer (args , files , args .outdir , args .algorithm , args .xtol , args . ftol , args .blocks )
411410
412411 def _validate_data (self ):
413412 BaseAnalysis ._validate_data (self )
414413 if not any (c .npop == 2 for c in self ._contigs ):
415414 logger .error ("Data contains no joint frequency spectrum information. Split estimation is impossible." )
416415 sys .exit (1 )
417416
418- def _init_optimizer (self , args , files , outdir , algorithm , tolerance , blocks , save = True ):
419- self ._optimizer = optimizer .TwoPopulationOptimizer (self , algorithm , tolerance , blocks , args .solver_args )
417+ def _init_optimizer (self , args , files , outdir , algorithm , xtol , ftol , blocks , save = True ):
418+ self ._optimizer = optimizer .TwoPopulationOptimizer (self , algorithm , xtol , ftol , blocks , args .solver_args )
420419 smax = np .sum (self ._model .distinguished_model .s )
421420 self ._optimizer .register (optimizer .ParameterOptimizer ("split" , (0. , smax ), "model" ))
422421 if save :
0 commit comments