Hello, first off, thanks for making this tool! I've been wanting a model-based tree reconciliation algorithm that works on large trees for years! (DLRS can't seem to handle very large trees with many many duplication events). Anyway, unfortunately it seems that the model-based function in your program isn't working right- when I run the example command with "--rectype par" it seems to work fine, but changing it to "--rectype lkl" causes it to throw the following error:
Traceback (most recent call last):
File "/usr/local/bin/gatc", line 793, in
crossrate=args.crossrate, fastconv=args.fastconv, sclparam=scalparam, selector=selectors[args.selector], logfile=args.output + "_ga.log")
File "/usr/local/bin/gatc", line 279, in evolve_ga
ga.setScaleParam(sclparam)
File "/home/sean/tools/GATC/lib/ga/evolve/GSimpleGA.py", line 302, in setScaleParam
self.internalPop.setScaleMethod(param.get_scaling_func())
File "/usr/local/bin/gatc", line 86, in get_scaling_func
return partial(scalemet, weight=self.weight, keepraw=self.keepraw)
AttributeError: ScalingParams instance has no attribute 'keepraw'
Looking at the ScalingParams class in the gatc script, it appears that in the init script the keepraw argument doesn't get added to the attributes. Hoping for an easy fix, I added "self.keepraw=keepraw" to the init function, and that just caused the following error:
Traceback (most recent call last):
File "/usr/local/bin/gatc", line 794, in
crossrate=args.crossrate, fastconv=args.fastconv, sclparam=scalparam, selector=selectors[args.selector], logfile=args.output + "_ga.log")
File "/usr/local/bin/gatc", line 321, in evolve_ga
ga.evolve(freq_stats=freqstat)
File "/home/sean/tools/GATC/lib/ga/evolve/GSimpleGA.py", line 595, in evolve
self.internalPop.evaluate(ga_engine=self)
File "/home/sean/tools/GATC/lib/ga/evolve/GPopulation.py", line 468, in evaluate
ind.evaluate(**args)
File "/home/sean/tools/GATC/lib/ga/evolve/GenomeBase.py", line 103, in evaluate
for it in self.evaluator.applyFunctions(self, **args):
File "/home/sean/tools/GATC/lib/ga/evolve/FunctionSlot.py", line 177, in applyFunctions
yield f(obj, **args)
File "/home/sean/tools/GATC/lib/ga/GPolySolver.py", line 436, in costEvaluate
return engine.recparam.computeRecCost(genome, **args)
File "/home/sean/tools/GATC/lib/ga/ReconParams.py", line 183, in computeRecCost
Qef = computeMat(dtlparams.getHash(), self, dtlparams)
File "/home/sean/tools/GATC/lib/TreeLib/memorize.py", line 26, in call
if self.cache.has_key(hashrep):
File "/usr/lib/python2.7/shelve.py", line 107, in has_key
return key in self.dict
File "/usr/lib/python2.7/_abcoll.py", line 388, in contains
self[key]
File "/usr/lib/python2.7/bsddb/init.py", line 270, in getitem
return _DeadlockWrap(lambda: self.db[key]) # self.db[key]
File "/usr/lib/python2.7/bsddb/dbutils.py", line 68, in DeadlockWrap
return function(*_args, **_kwargs)
File "/usr/lib/python2.7/bsddb/init.py", line 270, in
return _DeadlockWrap(lambda: self.db[key]) # self.db[key]
TypeError: Integer keys only allowed for Recno and Queue DB's
At this point I'm beyond my debugging capacity, and I figured that it's possible that I'm just supposed to use different arguments with the lkl rectype so I thought I'd just ask how to run it.
Thanks!
Sean
Hello, first off, thanks for making this tool! I've been wanting a model-based tree reconciliation algorithm that works on large trees for years! (DLRS can't seem to handle very large trees with many many duplication events). Anyway, unfortunately it seems that the model-based function in your program isn't working right- when I run the example command with "--rectype par" it seems to work fine, but changing it to "--rectype lkl" causes it to throw the following error:
Traceback (most recent call last):
File "/usr/local/bin/gatc", line 793, in
crossrate=args.crossrate, fastconv=args.fastconv, sclparam=scalparam, selector=selectors[args.selector], logfile=args.output + "_ga.log")
File "/usr/local/bin/gatc", line 279, in evolve_ga
ga.setScaleParam(sclparam)
File "/home/sean/tools/GATC/lib/ga/evolve/GSimpleGA.py", line 302, in setScaleParam
self.internalPop.setScaleMethod(param.get_scaling_func())
File "/usr/local/bin/gatc", line 86, in get_scaling_func
return partial(scalemet, weight=self.weight, keepraw=self.keepraw)
AttributeError: ScalingParams instance has no attribute 'keepraw'
Looking at the ScalingParams class in the gatc script, it appears that in the init script the keepraw argument doesn't get added to the attributes. Hoping for an easy fix, I added "self.keepraw=keepraw" to the init function, and that just caused the following error:
Traceback (most recent call last):
File "/usr/local/bin/gatc", line 794, in
crossrate=args.crossrate, fastconv=args.fastconv, sclparam=scalparam, selector=selectors[args.selector], logfile=args.output + "_ga.log")
File "/usr/local/bin/gatc", line 321, in evolve_ga
ga.evolve(freq_stats=freqstat)
File "/home/sean/tools/GATC/lib/ga/evolve/GSimpleGA.py", line 595, in evolve
self.internalPop.evaluate(ga_engine=self)
File "/home/sean/tools/GATC/lib/ga/evolve/GPopulation.py", line 468, in evaluate
ind.evaluate(**args)
File "/home/sean/tools/GATC/lib/ga/evolve/GenomeBase.py", line 103, in evaluate
for it in self.evaluator.applyFunctions(self, **args):
File "/home/sean/tools/GATC/lib/ga/evolve/FunctionSlot.py", line 177, in applyFunctions
yield f(obj, **args)
File "/home/sean/tools/GATC/lib/ga/GPolySolver.py", line 436, in costEvaluate
return engine.recparam.computeRecCost(genome, **args)
File "/home/sean/tools/GATC/lib/ga/ReconParams.py", line 183, in computeRecCost
Qef = computeMat(dtlparams.getHash(), self, dtlparams)
File "/home/sean/tools/GATC/lib/TreeLib/memorize.py", line 26, in call
if self.cache.has_key(hashrep):
File "/usr/lib/python2.7/shelve.py", line 107, in has_key
return key in self.dict
File "/usr/lib/python2.7/_abcoll.py", line 388, in contains
self[key]
File "/usr/lib/python2.7/bsddb/init.py", line 270, in getitem
return _DeadlockWrap(lambda: self.db[key]) # self.db[key]
File "/usr/lib/python2.7/bsddb/dbutils.py", line 68, in DeadlockWrap
return function(*_args, **_kwargs)
File "/usr/lib/python2.7/bsddb/init.py", line 270, in
return _DeadlockWrap(lambda: self.db[key]) # self.db[key]
TypeError: Integer keys only allowed for Recno and Queue DB's
At this point I'm beyond my debugging capacity, and I figured that it's possible that I'm just supposed to use different arguments with the lkl rectype so I thought I'd just ask how to run it.
Thanks!
Sean