Open biorover opened 6 years ago
Hi, Sean!
Thanks for your interest in GATC and for reporting this bug. Just by glancing through the output, it seems that this is caused by the caching function.
I am traveling actually, so I won't be able to take a look at it before some time.
Just for confirmation, are you looking for an algorithm that will only reconcile your input tree? Because GATC will modify it, in his search for a "better tree."
If you are in a hurry, some alternatives that are similar to GATC are JPrime (also known as Prime, GSR, DLRS, etc. I think you are probably aware of the fact that it was rewritten entirely in Java) and maybe ALE. Although both will also explore alternative trees that would yield the more likely histories.
Emmanuel
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